使用next读入字符串无法跳出循环
package test1;import java.util.Scanner;
public class Cat {
private int SN, i = 1;
private String name;
private static int counter = 0; // 设置全局变量
public Cat(String name) {
this.name = name;
counter ++;
SN = counter;
}
public void speak() {
for(int i = 1; i <= SN; i++) {
System.out.println("创建了第" + i + "只猫,名字是" + name);
}
System.out.println("共创建了" + SN + "只猫");
}
public static void main(String[] args) {
int i = 0;
Cat c[] = new Cat;
Scanner input = new Scanner(System.in);
String cat = input.next();
while (cat != "return") {
c = new Cat(cat);
System.out.println("创建了猫:" + cat); // 输出创建的猫的名字
i++;
cat = input.next();
}
for (int j = 0; j < i; j++) {
c.speak();
}
}
}
想要当输入为return时退出循环,但是无法退出,请问为什么呢?
问题出在判断是否退出循环的语句上。在Java中,判断两个字符串是否相等时不能使用“==”,而应该使用equals()方法。修改代码如下:
Scanner input = new Scanner(System.in);
String cat = input.next();
while (!cat.equals("return")) { // 判断字符串是否相等
c = new Cat(cat);
System.out.println("创建了猫:" + cat);
i++;
cat = input.next();
}
使用equals()方法判断字符串是否相等可以避免使用“==”时出现的问题。此外,在输入字符串时,建议使用nextLine()方法读取一行字符串,这样可以避免输入中包含空格或其他特殊字符时出现的问题。修改后的代码如下:
Scanner input = new Scanner(System.in);
while (true) {
String cat = input.nextLine();
if (cat.equals("return")) {
break; // 跳出循环
}
c = new Cat(cat);
System.out.println("创建了猫:" + cat);
i++;
}
在这个例子中,我们使用了一个无限循环(while(true)),并在循环内部使用break语句来跳出循环。每次循环开始时,使用nextLine()方法读取一行字符串,并判断它是否等于“return”。如果是,就调用break语句跳出循环;如果不是,就创建一个新的Cat对象,并输出相应的信息。
希望这样可以解决你的问题,祝你学习愉快!
球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:} 在Java中,字符串的比较应该使用equals()方法而不是使用==或!=运算符进行比较。在你的代码中,你使用了 while (cat != "return") 来比较字符串,这是不正确的。
正确的做法是使用 while (!cat.equals("return")) 来比较字符串。这是因为 == 运算符比较的是对象的引用,而不是对象的内容。而equals()方法比较的是对象的内容。
所以,你应该将你的代码修改为:
while (!cat.equals("return")) {
c[ i] = new Cat(cat);
System.out.println("创建了猫:" + cat);
i++;
cat = input.next();
}
这样,当输入为"return"时,循环将会退出。 while (!cat.equals("return")) {// 使用.equals()方法比较字符串
c = new Cat(cat);
System.out.println("创建了猫:" + cat); // 输出创建的猫的名字
i++;
cat = input.next();
}
java里while (cat != "return")不妥啊
页:
[1]