2013-03-10 3 views
0

У меня есть два символьных массивов в Java:Java, Проверка, если два символьные массивы равны

orig_array и mix_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

+0

@Jeremy, я поставил данные образца. mix_team - это в основном перетасованная версия orig_team. – user1471980

+0

Bah; нет необходимости в 'else', если условие' if' завершается. –

ответ

2

Вы по существу есть следующий цикл:

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

Код внутри цикла while будет работать только тогда, когда something вычисляет true. Таким образом, значение !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.

Смежные вопросы