【问题标题】:Two inputs before the if statementif 语句之前的两个输入
【发布时间】:2017-07-03 09:01:45
【问题描述】:

对于以下代码,我必须在进入 if 语句之前输入 2 个输入。 Java 对我来说很陌生,所以我不明白我做错了什么。谁能帮我解决这个问题?

package oefenen;

import java.util.Scanner;

public class oefenen {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        String name;
        System.out.println("Adin ne?");
        // TODO Auto-generated method stub
        name = scan.next();

            if (scan.next().equals("samet")); {
                System.out.println("Merhaba memetin oglu");
            }

    }

}

【问题讨论】:

  • name.equals("samet") 而不是 scan.next().equals("samet")scan.next() 实际上从输入流中扫描下一个令牌。如果需要比较名称,则需要使用存储名称的变量。
  • nextLine()。第一个next() 不消耗\n,所以这个被下一个消耗了。
  • 你想达到什么目的?尽管您不使用第一个输入,但此代码确实需要 2 个输入
  • @ChandlerBing 我不想实现任何目标。我只是在玩代码来了解 java 的基础知识。

标签: java java.util.scanner


【解决方案1】:

你忽略了name的值

由于末尾的分号,您的 if 语句实际上也被忽略了

试试这个

 if (name.equals("samet")) { // remove semicolon 

【讨论】:

    【解决方案2】:

    scan.next() 将在您每次调用它时等待新的输入。

    尝试使用name.equals("samet") 而不是scan.next().equals("samet")

    【讨论】:

    • 回答所有问题,但深入解释正在发生的事情也会有所帮助,我认为这是 OP 最难解决的问题。
    【解决方案3】:

    来自 Scanner.next() 文档:

    从此扫描器中查找并返回下一个完整的令牌。 一个完整的标记前后是匹配的输入 分隔符模式。此方法可能会在等待输入时阻塞 扫描,即使先前调用 hasNext 返回 true.

    每次您调用 next() 方法时,它都会尝试读取输入,在您的示例中,您调用了两次该方法,这就是为什么您必须在进入打印语句之前输入两个输入

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-09
      • 2017-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多