当前位置: 首页 > 知识库问答 >
问题:

用户输入不适用于keyboard.next行()和字符串(Java)

洪旻
2023-03-14

我最近开始在业余时间学习java。所以为了练习,我制作了一个程序,可以测量温度(摄氏度或华氏度),并将其转换为相反的温度。我已经导入了键盘扫描仪。

    int temp;
    String opposite, type;
    double product;

    System.out.print("Please enter a temperature: ");
    temp = keyboard.nextInt();

    System.out.println("Was that in Celsius or Fahrenheit?");
    System.out.print("(Enter 'C' for Celsius and 'F' for Fahrenheit) ");
    type = keyboard.nextLine();

    if (type == "C") // Only irrelevant temp conversion code left so I'm leaving it out

我不熟悉字符串nextLine之类的东西,程序只是跳过了用户输入部分,在那里输入C或F。有人能解释一下我能做些什么来解决这个问题吗?

谢谢!

共有3个答案

魏晨
2023-03-14

。nextInt()不读取行尾字符“\n”

您需要在. nextInt()后面放一个keyboard.nextLine(),然后它就可以工作了。

夏侯彬郁
2023-03-14

永远不要在Scanner#nextInt之后使用Scanner#nextLine。每当您在Scanner#nextInt之后按下回车键时,它将跳过Scanner#nextLine命令。因此,从

 int temp = keyboard.nextInt();

 int temp = Integer.parseInt(keyboard.nextLine());
邢起运
2023-03-14

为您更改代码nextLine() 下一步() 它会工作的。

System.out.println("Was that in Celsius or Fahrenheit?");
    System.out.print("(Enter 'C' for Celsius and 'F' for Fahrenheit) ");
    type = keyboard.next();

为了让你知道发生了什么:

  • nextLine():使扫描仪前进到当前行,并返回跳过的输入。
  • Next():查找并返回此扫描仪中的下一个完整令牌。

也像许多答案所说的使用equals()而不是使用==

=只检查对对象的引用是否相等<代码>。equal()比较字符串。

在这里阅读更多

 类似资料:
  • 运行代码时,我收到一个数字格式异常: 如何防止此异常发生?

  • 问题内容: 我在使用python eval函数执行多行字符串时遇到问题/ 问题答案: 只能评估Python 表达式 ,不能评估语句。函数定义是语句,而不是表达式。 使用执行Python语句。 请参阅“ 顶层组件” 文档 ,该文档在 文件输入 和 表达式输入 之间进行区分(其中包括): 在以下情况下使用此语法: […] 解析传递给该语句的字符串时; 和 […]的字符串参数必须具有以下形式: 千万 不

  • 问题内容: System.out.print(“Name : “); String name = in.nextLine(); 输出将是: 名称:测试 年龄:20 建立成功 当我调试它们时,它不会读取“ city”的用户输入。但是,当我将“年龄”的数据类型更改为字符串时,它将读取。我如何在读取城市用户输入的系统中将age的数据类型保持为整型? 问题答案: 读取年龄后,由于缓冲区中仍然有换行符,请将

  • 我正在编辑从tesseract ocr收到的一些电子邮件。 以下是我的代码: 但输出不正确。 输入: 输出: 但是当我在每次替换后将结果赋给一个新的字符串时,它工作得很好。为什么在同一个字符串中连续赋值不起作用?

  • 当我在Jsp程序中使用属性自定义标记时,出现了一些错误: Servlet。路径为[/Tag]的上下文中servlet[jsp]的service()引发了具有根本原因java的异常[无法编译jsp类]。lang.NumberFormatException:用于输入字符串:“标记” 细节如下: 标签jsp tag.tld 日期标签。JAVA