2013-03-10 88 views
0

我在Java的兩種字符數組:的Java,檢查,看看如果兩個字符數組相等

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); 
    } 
}  

我怎麼能確定這兩個數組相等?

+0

你可以提供一些樣本輸入orig_team和mix_team嗎? – Jeremy 2013-03-10 03:25:30

+0

@Jeremy,我已經把示例數據。 mix_team基本上是洗牌版本的orig_team。 Bah33; – user1471980 2013-03-10 03:29:49

+0

Bah;如果'if'條件退出,則不需要'else'。 – 2013-03-10 03:33:08

回答

2

你基本上具有下列循環:

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

如果something計算結果爲truewhile循環中的代碼纔會運行。因此,!something的值將始終爲假,並且if語句的內容將不會運行。

相反,嘗試:

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循環之前聲明掃描器(基本上將初始化線移動兩行)。

3

while循環的塊只在兩個數組爲而不是相等時才執行,所以用相同的等同性檢查開始該塊是沒有意義的。換句話說,行:

if (Arrays.equals(mix_team, orig_team)) 

...將永遠是false

相關問題