It appears there is no easy way of doing this, but this is what i've done so far and if someone could correct it to make it work that would be great. At "newarray [e] = array [i].intValue ();" i get an error "No method named "intValue" was found in type "java.lang.Object"." Help!
/*
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
}
toArray() returns an Object[], it can be converted to String array by passing the String[] as parameter.
In the Java programming language, arrays are objects (§4.3. 1), are dynamically created, and may be assigned to variables of type Object (§4.3. 2). All methods of class Object may be invoked on an array. An array object contains a number of variables.
To convert an object to an array you use one of three methods: Object. keys() , Object. values() , and Object. entries() .
You can use Integer.valueOf.
Integer.valueOf((String) array [i])
The Integer
class has a method valueOf
which takes a string as the value and returns a int
value, you can use this. It will throw an NumberFormatException
if the string passed to it is not a valid integer value.
Also If you are using java5 or higher you can try using generics to make the code more readable.
You can implement the same using Generics, which would be easier.
List<Integer> numbers = new ArrayList<Integer> ();
Integer[] array = numbers.toArray (new Integer [10]);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With