9

これを行う簡単な方法はないようですが、これは私がこれまでに行ったことであり、誰かがそれを修正して機能させることができれば、それは素晴らしいことです. 「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

}

4

5 に答える 5

10

Integer.valueOfを使用できます。

Integer.valueOf((String) array [i])

IntegerクラスにはvalueOf、文字列を値として取り、値を返すメソッドがあり、これintを使用できます。NumberFormatException渡された文字列が有効な整数値でない場合は、がスローされます。

また、java5 以降を使用している場合は、ジェネリックを使用してコードを読みやすくすることができます。

于 2013-01-16T03:20:15.410 に答える
5

Genericsを使用して同じことを実装できます。これは簡単です。

List<Integer> numbers = new ArrayList<Integer> ();
Integer[] array = numbers.toArray (new Integer [10]);
于 2013-01-16T03:20:26.443 に答える
3

commons-lang を試してみる

org.apache.commons.lang.ArrayUtils.toPrimitive(Integer[])
于 2013-01-16T04:02:50.317 に答える
2

クラスに methodがない.intValue()ためObject、 を呼び出すことはできません。ObjectintValue()

Object代わりに、次のように、最初にIntegerクラスにキャストする必要があります。

newarray[e] = ((Integer)array[i]).intValue();

編集: StackOverflow に関する役立つヒントです。コードを関連のあるものに限定してください。場合によっては大きなコード ブロックが必要になることもありますが、この場合はそうではありませんでした。質問の見栄えが良くなり、より良い回答が得られるはずです。

タグは使用しないでください。これは現在非推奨であり、焼却の過程にあります。

于 2013-01-16T03:19:56.487 に答える
1

私はこれがかなり遅いことを知っていますが、これが私の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];
}
于 2020-02-19T10:16:10.047 に答える