You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java循环输入0未终止问题:原因分析与解决方法

问题原因与解决方案

问题原因

在Java里,用!=或==比较字符串时,对比的是字符串对象的内存引用地址,而非字符串的实际内容。你通过Scanner读取的"0"和代码里的字面量"0"属于不同的对象(即使字符串常量池会缓存字面量,Scanner读取的输入是新创建的字符串对象),所以inputting != "0"的判断永远为true,循环无法终止。

修改方案

方式1:用equals()方法比较字符串内容

这是Java中比较字符串内容的标准写法,替换原有的循环条件:

import java.util.*;

String inputting = "";
            
while(!inputting.equals("0"))
{
  Scanner scan = new Scanner(System.in);
  inputting = scan.next();
  System.out.println("Next");
  System.out.println(inputting);
}

方式2:用Objects.equals()避免空指针异常(更安全)

如果担心inputting为空触发NullPointerException,可以借助Objects.equals(),它会先处理空值判断:

import java.util.*;
import java.util.Objects;

String inputting = "";
            
while(!Objects.equals(inputting, "0"))
{
  Scanner scan = new Scanner(System.in);
  inputting = scan.next();
  System.out.println("Next");
  System.out.println(inputting);
}

额外优化

把Scanner对象的创建移到循环外,避免每次循环都重复创建对象,提升效率:

import java.util.*;

Scanner scan = new Scanner(System.in);
String inputting = "";
            
while(!inputting.equals("0"))
{
  inputting = scan.next();
  System.out.println("Next");
  System.out.println(inputting);
}
scan.close(); // 使用完毕后关闭Scanner

内容的提问来源于stack exchange,提问作者Faruk Nergiz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 22:25:21