我试图看看两个char数组是否相等但是由于某种原因它们似乎从来没有像Java一样正确读取。我很确定这可能与我对Arrays.equals()方法缺乏了解有关,所以如果有人愿意解释一下Arrays.equals()在数组中看起来会很棒(来自我的')从一个简单的谷歌搜索看到它似乎检查数组中有多少元素,然后内容,但我在该元素的方法中看到的东西,例如大写字母使它不等)
由于这很可能只是错误的代码,这里是我的代码:
int count = 0;
Highscore words = new Highscore();
String word = words.getWord();
word = word.toUpperCase();
char guess;
for(int i = 0; i<word.length(); i++)
{
charwo[count] = word.charAt(i);
charda[count]= '_';
count++;
}
int guesses =7;
while(guesses != 0 || !Arrays.equals(charwo, charda))
{
System.out.println("");
for(int l=0; l<count; l++)
{
System.out.print(" "+charda[l]);
}
guess = JOptionPane.showInputDialog("Enter letter ").charAt(0);
if(word.toUpperCase().contains(String.valueOf(guess).toUpperCase()))
{
for(int k = 0; k<word.length(); k++)
{
if(String.valueOf(guess).toUpperCase().equals(String.valueOf(charwo[k]).toUpperCase()))
{
charda[k]=charwo[k];
}
}
}
else
{
guesses = guesses-1;
System.out.println("guesses left "+guesses);
}
}
}
答案 0 :(得分:3)
是Arrays.equals()
适用于char数组。 char是一种原始类型,可以安全地使用==。
同样来自documentation:
如果两个指定的chars数组等于1,则返回true 另一个。如果两个数组都包含,则认为两个数组相等 相同数量的元素,以及所有相应的元素对 这两个数组相等。换句话说,两个数组是相等的 包含相同顺序的相同元素。另外,两个阵列 如果两者都为空,则认为引用是相等的。
答案 1 :(得分:1)
你可能想要
while(guesses != 0 && !Arrays.equals(charwo, charda))
而不是
while(guesses != 0 || !Arrays.equals(charwo, charda))
当用户仍然猜测时,继续循环并且他没有找到解决方案。
如果对算法有疑问,请在调试模式下启动应用程序,逐行执行,并评估表达式以查看其值。所有当前的IDE(例如IntelliJ,Eclipse,NetBeans)都非常容易。
答案 2 :(得分:0)
来自源代码:
Arrays.equals
按顺序检查
答案 3 :(得分:0)
Arrays.equals()
适用于char数组,因为它也是java中的数组。我想你可以自己检查一下。