鱼C论坛

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

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

[复制链接]
发表于 2023-10-22 22:16:19 | 显示全部楼层 |阅读模式
20鱼币
  1. package test1;

  2. import java.util.Scanner;

  3. public class Cat {
  4.         private int SN, i = 1;
  5.         private String name;
  6.         private static int counter = 0; // 设置全局变量
  7.        
  8.         public Cat(String name) {
  9.                 this.name = name;
  10.                 counter ++;
  11.                 SN = counter;
  12.         }
  13.        
  14.         public void speak() {  
  15.             for(int i = 1; i <= SN; i++) {  
  16.                 System.out.println("创建了第" + i + "只猫,名字是" + name);  
  17.             }  
  18.             System.out.println("共创建了" + SN + "只猫");  
  19.         }

  20.         public static void main(String[] args) {  
  21.             int i = 0;  
  22.             Cat c[] = new Cat[10];  
  23.              
  24.             Scanner input = new Scanner(System.in);  
  25.             String cat = input.next();  
  26.              
  27.             while (cat != "return") {  
  28.                 c[i] = new Cat(cat);  
  29.                 System.out.println("创建了猫:" + cat); // 输出创建的猫的名字  
  30.                 i++;  
  31.                 cat = input.next();  
  32.             }  
  33.              
  34.             for (int j = 0; j < i; j++) {  
  35.                 c[j].speak();  
  36.             }  
  37.         }
  38. }
复制代码
想要当输入为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()方法判断字符串是否相等可 ...
小甲鱼最新课程 -> https://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对象,并输出相应的信息。

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

球一个最佳答案谢谢啦!这对我非常重要!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-10-22 22:16:36 | 显示全部楼层
在Java中,字符串的比较应该使用equals()方法而不是使用==或!=运算符进行比较。在你的代码中,你使用了 while (cat != "return") 来比较字符串,这是不正确的。

正确的做法是使用 while (!cat.equals("return")) 来比较字符串。这是因为 == 运算符比较的是对象的引用,而不是对象的内容。而equals()方法比较的是对象的内容。

所以,你应该将你的代码修改为:

  1. while (!cat.equals("return")) {
  2.     c[ i] = new Cat(cat);
  3.     System.out.println("创建了猫:" + cat);
  4.     i++;
  5.     cat = input.next();
  6. }
复制代码


这样,当输入为"return"时,循环将会退出。
小甲鱼最新课程 -> https://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")  不妥啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-12 10:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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