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
二维码
