似乎没有简单的方法可以做到这一点,但这是我到目前为止所做的,如果有人能够纠正它以使其工作那将是伟大的。在“newarray [e] = array [i] .intValue();”我收到一个错误“没有命名方法”intValue“在类型”java.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
}
答案 0 :(得分:9)
您可以使用Integer.valueOf。
Integer.valueOf((String) array [i])
Integer
类有一个方法valueOf
,它以字符串作为值并返回int
值,您可以使用它。如果传递给它的字符串不是有效的整数值,它将抛出NumberFormatException
。
此外,如果您使用的是java5或更高版本,则可以尝试使用generics来使代码更具可读性。
答案 1 :(得分:5)
您可以使用Generics实现相同功能,这会更容易。
List<Integer> numbers = new ArrayList<Integer> ();
Integer[] array = numbers.toArray (new Integer [10]);
答案 2 :(得分:3)
试一试 公地琅
org.apache.commons.lang.ArrayUtils.toPrimitive(Integer[])
答案 3 :(得分:2)
您无法在.intValue()
上致电Object
,因为Object
类缺少方法intValue()
。
相反,您需要先将Object
转换为Integer
类,如下所示:
newarray[e] = ((Integer)array[i]).intValue();
编辑:在StackOverflow上提供一个有用的提示 - 请将您的代码限制为相关内容!虽然有时需要大块代码,但在这种情况下,却不是。它使问题看起来更好,并且必然会以这种方式获得更好的响应。
另外,请不要使用homework标记。它目前已被弃用,正在进行焚烧。
答案 4 :(得分:0)
我做了这个方法......我觉得更好!
public int[] ToMixArray(Object[] Array, int StratIndex, int Valuedefault, int NewLength){
int[] res=new int[NewLength];
for (int i = 0; i < NewLength; i++) {
try { res[i]=Integer.parseInt(String.valueOf(Array[StratIndex+i]));}
catch(Exception e){res[i]=Valuedefault;}
}return res;
}
答案 5 :(得分:0)
我知道这已经很晚了,但是这是我的2美分!
int[] newArray=new int[objectArray.length];
Object[] objectArray = {1,2,3,4,5};
for(int i=0;i<objectArray.length();i++){
b[i]=(int)objectArray[i];
}