的Java,检查,看看如果两个字符数组相等
问题描述:
我在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);
}
}
我怎么能确定这两个数组相等?
答
你基本上具有下列循环:
while (something) {
if (! something) {
code();
}
}
如果something
计算结果为true
的while
循环中的代码才会运行。因此,!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
循环之前声明扫描器(基本上将初始化线移动两行)。
答
while
循环的块只在两个数组为而不是相等时才执行,所以用相同的等同性检查开始该块是没有意义的。换句话说,行:
if (Arrays.equals(mix_team, orig_team))
...将永远是false
。
你可以提供一些样本输入orig_team和mix_team吗? – Jeremy 2013-03-10 03:25:30
@Jeremy,我已经把示例数据。 mix_team基本上是洗牌版本的orig_team。 Bah33; – user1471980 2013-03-10 03:29:49
Bah;如果'if'条件退出,则不需要'else'。 – 2013-03-10 03:33:08