鱼C论坛

 找回密码
 立即注册
查看: 654|回复: 3

[已解决]使用next读入字符串无法跳出循环

[复制链接]
发表于 2023-10-22 22:16:19 | 显示全部楼层 |阅读模式
20鱼币
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[10];  
              
            Scanner input = new Scanner(System.in);  
            String cat = input.next();  
              
            while (cat != "return") {  
                c[i] = new Cat(cat);  
                System.out.println("创建了猫:" + cat); // 输出创建的猫的名字  
                i++;  
                cat = input.next();  
            }  
              
            for (int j = 0; j < i; j++) {  
                c[j].speak();  
            }  
        }
}
想要当输入为return时退出循环,但是无法退出,请问为什么呢?

最佳答案
2023-10-22 22:16:20
问题出在判断是否退出循环的语句上。在Java中,判断两个字符串是否相等时不能使用“==”,而应该使用equals()方法。修改代码如下:

[/code]
Scanner input = new Scanner(System.in);
String cat = input.next();

while (!cat.equals("return")) { // 判断字符串是否相等
    c[i] = new Cat(cat);
    System.out.println("创建了猫:" + cat);
    i++;
    cat = input.next();
}
[/code]

使用equals()方法判断字符串是否相等可以避免使用“==”时出现的问题。此外,在输入字符串时,建议使用nextLine()方法读取一行字符串,这样可以避免输入中包含空格或其他特殊字符时出现的问题。修改后的代码如下:

[/code]
Scanner input = new Scanner(System.in);

while (true) {
    String cat = input.nextLine();
    if (cat.equals("return")) {
        break; // 跳出循环
    }
    c[i] = new Cat(cat);
    System.out.println("创建了猫:" + cat);
    i++;
}
[/code]

在这个例子中,我们使用了一个无限循环(while(true)),并在循环内部使用break语句来跳出循环。每次循环开始时,使用nextLine()方法读取一行字符串,并判断它是否等于“return”。如果是,就调用break语句跳出循环;如果不是,就创建一个新的Cat对象,并输出相应的信息。

希望这样可以解决你的问题,祝你学习愉快!

球一个最佳答案谢谢啦!这对我非常重要!

最佳答案

查看完整内容

问题出在判断是否退出循环的语句上。在Java中,判断两个字符串是否相等时不能使用“==”,而应该使用equals()方法。修改代码如下: [/code] 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(); } [/code] 使用equals()方法判断字符串是否相等可 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-10-22 22:16:20 | 显示全部楼层    本楼为最佳答案   
问题出在判断是否退出循环的语句上。在Java中,判断两个字符串是否相等时不能使用“==”,而应该使用equals()方法。修改代码如下:

[/code]
Scanner input = new Scanner(System.in);
String cat = input.next();

while (!cat.equals("return")) { // 判断字符串是否相等
    c[i] = new Cat(cat);
    System.out.println("创建了猫:" + cat);
    i++;
    cat = input.next();
}
[/code]

使用equals()方法判断字符串是否相等可以避免使用“==”时出现的问题。此外,在输入字符串时,建议使用nextLine()方法读取一行字符串,这样可以避免输入中包含空格或其他特殊字符时出现的问题。修改后的代码如下:

[/code]
Scanner input = new Scanner(System.in);

while (true) {
    String cat = input.nextLine();
    if (cat.equals("return")) {
        break; // 跳出循环
    }
    c[i] = new Cat(cat);
    System.out.println("创建了猫:" + cat);
    i++;
}
[/code]

在这个例子中,我们使用了一个无限循环(while(true)),并在循环内部使用break语句来跳出循环。每次循环开始时,使用nextLine()方法读取一行字符串,并判断它是否等于“return”。如果是,就调用break语句跳出循环;如果不是,就创建一个新的Cat对象,并输出相应的信息。

希望这样可以解决你的问题,祝你学习愉快!

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-10-22 22:16:36 | 显示全部楼层
在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"时,循环将会退出。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-10-22 22:23:16 | 显示全部楼层
while (!cat.equals("return")) {  // 使用.equals()方法比较字符串
    c[i] = new Cat(cat);
    System.out.println("创建了猫:" + cat); // 输出创建的猫的名字
    i++;
    cat = input.next();
}

java里while (cat != "return")  不妥啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 02:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表