2013-03-10 90 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

相关问题