Convert object [] array to int [] array in Java?
•
Java
There seems to be no simple way to do this, but this is what I have done so far. If someone can correct it, its work will be great In "newarray [e] = array [i]. Intvalue();" I received an error "no naming method" intvalue "in type" Java "Found in lang. object."
/* Description: A game that displays digits 0-9 and asks the user for a number N. It then reverses the first N numbers of the sequence. It continues this until all of the numbers are in order. numbers */ import hsa.Console; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Arrays; public class ReversalGame3test { static Console c; public static void main (String[] args) { c = new Console (); c.println ("3. REVERSAL GAME"); c.println (""); c.println ("Displayed below are the digits 0-9 in random order. You must then enter a"); c.println ("number N after which the computer will reverse the first N numbers in the"); c.println ("sequence. The goal of this game is to sort all of the numbers in the fewest"); c.println ("number of reversals."); c.println (""); //introduction List numbers = new ArrayList (); numbers.add ("0"); numbers.add ("1"); numbers.add ("2"); numbers.add ("3"); numbers.add ("4"); numbers.add ("5"); numbers.add ("6"); numbers.add ("7"); numbers.add ("8"); numbers.add ("9"); Collections.shuffle (numbers); Object[] array = numbers.toArray (new String [10]); // declares + shuffles numbers and converts them to array c.print ("Random Order: "); for (int i = 0 ; i < 10 ; i++) { c.print ((array [i]) + " "); } c.println (""); boolean check = false; boolean check2 = false; String NS; int N = 0; int count = 0; int e = -1; int[] newarray = new int [10]; //INPUT do { c.print ("Enter a number: "); NS = c.readString (); count += 1; check = isInteger (NS); if (check == true) { N = Integer.parseInt (NS); if (N < 1 || N > 10) { check = false; c.println ("ERROR - INPUT NOT VALID"); c.println (""); } else { c.print ("Next Order: "); for (int i = N - 1 ; i > -1 ; i--) { e += 1; newarray [e] = array [i].intValue (); c.print ((newarray [e]) + " "); } for (int i = N ; i < 10 ; i++) { e += 1; newarray [e] = array [i].intValue (); c.print ((newarray [e]) + " "); } check2 = sorted (newarray); } // rearranges numbers if valid } // checks if N is valid number } while (check == false); } // main method public static boolean isInteger (String input) { try { Integer.parseInt (input); return true; } catch (NumberFormatException nfe) { return false; } } //isInteger method public static boolean sorted (int array[]) { boolean isSorted = false; for (int i = 0 ; i < 10 ; i++) { if (array [i] < array [i + 1]) { isSorted = true; } else if (array [i] > array [i + 1]) { isSorted = true; } else isSorted = false; if (isSorted != true) return isSorted; } return isSorted; } // sorted method
}
Solution
You can use integer valueOf.
Integer.valueOf((String) array [i])
The integer class has a method valueof, which takes a string as a value and returns an int value. You can use it If the string passed to it is not a valid integer value, it will throw numberformatexception
In addition, if you are using Java 5 or later, you can try using generics to make the code more readable
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码