0

Java には 2 つの文字配列があります。

orig_arraymix_array。それらが等しくないかどうかを確認する必要があります。

これが私がこれまでに持っているものです:

sample data
orig_team=one
mix_team=neo

while(!Arrays.equals(mix_team, orig_team))
{

    if (Arrays.equals(mix_team, orig_team))
    {

        System.out.println("congradulations! you did it");
        System.exit(0);
    }

    else {

        System.out.println("enter the index");
        Scanner scn = new Scanner(System.in);
        int x = scn.nextInt();
        int y = scn.nextInt();
        char first=mix_team[x];
        char second=mix_team[y];
        mix_team[x]=second;
        mix_team[y]=first;
        for (int i = 0; i < mix_team.length; i = i + 1) 
        {
            System.out.print(i);  
            System.out.print(" ");
        }
        System.out.println();
        System.out.println(mix_team);
    }
}       

2 つの配列が等しいかどうかを判断するにはどうすればよいですか?

4

2 に答える 2

3

ループのブロックは、2 つの配列が等しくないwhile場合にのみ実行されるため、同じ等価チェックでそのブロックを開始しても意味がありません。つまり、次の行です。

if (Arrays.equals(mix_team, orig_team))

...常にそうfalseです。

于 2013-03-10T03:33:14.653 に答える
2

基本的に次のループがあります。

while (something) {
    if (! something) {
        code();
    }
}

ループ内のコードは、がに評価されたwhile場合にのみ実行されます。したがって、 の値は常に false になり、ステートメントの内容は実行されません。somethingtrue!somethingif

代わりに、次を試してください。

while (!Arrays.equals (mix_team, orig_team)) {
    System.out.println("enter the index");
    Scanner scn = new Scanner(System.in);
    int x = scn.nextInt();
    int y = scn.nextInt();
    char first=mix_team[x];
    char second=mix_team[y];
    mix_team[x]=second;
    mix_team[y]=first;
    for (int i = 0; i < mix_team.length; i = i + 1) 
    {
        System.out.print(i);  
        System.out.print(" ");
    }
    System.out.println();
    System.out.println(mix_team);
}
System.out.println("congratulations! you did it");
System.exit(0);

ちなみに、毎回スキャナーを作成する必要はありません。より良い方法は、ループの前にスキャナーを宣言することですwhile(基本的に、初期化行を 2 行上に移動します)。

于 2013-03-10T03:33:43.830 に答える