do-while循环是否在增加之前或之后检查一个值?我似乎无法使这个do-while循环转义,并且无法确定这是否是我正在犯的错误。这个循环的要点是从用户那里获取输入,当它们点击'X'时,我希望循环结束。我使用了错误的循环类型,或者说错误的陈述?
int i = 0,
inputCount = 0;
char letter = 'a';
String[] coefficient = new String[MAX_LENGTH];
do{
System.out.print("What is " + letter +"? ");
coefficient[i] = keyboard.nextLine();
i++;
letter++;
inputCount++;
}while(coefficient[i] != "X");
答案 0 :(得分:4)
不要使用==
比较字符串。请改用equals(...)
或equalsIgnoreCase(...)
方法。理解==检查两个对象是否相同而不是您感兴趣的。另一方面,这些方法检查两个字符串是否具有相同顺序的相同字符,并且这才是最重要的。而不是
if (fu == "bar") {
// do something
}
做,
if ("bar".equals(fu)) {
// do something
}
,或者
if ("bar".equalsIgnoreCase(fu)) {
// do something
}
特别是在你的情况下,我会改变
} while(coefficient[i] != "X");
类似于:
} while(!"X".equalsIgnoreCase(coefficient[i]));
你的代码中还有另一个问题,就是你要测试放入coefficient[i]
的用户输入,但随后你迅速增加i变量,使coefficient[i]
不再引用输入。
所以也许测试应该是:
} while(!"X".equalsIgnoreCase(coefficient[i - 1]));
答案 1 :(得分:1)
这里有两个问题。首先,您不应该使用逻辑运算符比较字符串。请改用.equals。 例如:
coefficient[i].equals("X");
其次,在检查while条件之前,您正在递增数组索引计数器。所以你实际上需要从中减去一个以检查最近输入的String是否为X.
看看使用它会使它运转起来:
coefficient[i-1].equals("X");
答案 2 :(得分:1)
您在i
和coefficient[i] = keyboard.nextLine();
之间递增while(coefficient[i] != "X");
,因此在while check系数[i]为null时,也可以使用.equals来比较字符串。
int i = 0,
inputCount = 0;
char letter = 'a';
String[] coefficient = new String[MAX_LENGTH];
do{
System.out.print("What is " + letter +"? ");
coefficient[i] = keyboard.nextLine();
i++;
letter++;
inputCount++;
}while(!coefficient[i-1].equals("X"));