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

如何将指定Python小游戏代码用Java复现并解决NoSuchElementException报错

错误产生原因
  • 错误的Scanner操作逻辑:你在每次循环结束时调用input.close(),该方法执行时会直接关闭底层的System.in输入流,第二次循环再新建Scanner读取已关闭的输入流时,就会抛出NoSuchElementException。同时完全没有必要每次循环都新建Scanner对象,全局初始化一次即可。
  • 字符串比较逻辑错误:Java中使用!=比较字符串时,判断的是两个字符串对象的内存地址而非内容,即使用户输入了your name,input.next()返回的字符串对象和常量池中的your name地址也不相同,循环永远不会正常跳出,需要用equals方法比较字符串内容。
  • 输入读取方法不匹配:Python的input()会读取整行输入,而Java的input.next()只会读取到空格为止,行为和原Python逻辑不一致,应该用nextLine()方法匹配原逻辑。
正确复现Python功能的Java代码
import java.util.Scanner;

public class sillyGame {
  public static void main(String[] args) {
    String name = "";
    // 全局仅初始化一次Scanner
    Scanner input = new Scanner(System.in);

    while (!name.equals("your name")) {
      System.out.println("Please type your name.");
      // 读取整行输入,和Python input()行为对齐
      name = input.nextLine();
    }

    // 所有输入逻辑执行完毕后再关闭Scanner
    input.close();
    System.out.println("Thank you!");
  }
}

内容的提问来源于stack exchange,提问作者Cristian Diaz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 21:09:03