if语句之前的两个输入
问题描述:
对于下面的代码,我必须在输入ifstatement之前先输入2个输入。 Java对我来说很安静,所以我不明白我做错了什么。任何人都可以帮我解决这个问题吗?if语句之前的两个输入
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
的价值和你的if语句实际上是被忽略的,以及由于在最后的分号
试试这个
if (name.equals("samet")) { // remove semicolon
答
scan.next()
每次调用它时都会等待新的输入。
尝试使用name.equals("samet")
,而不是scan.next().equals("samet")
+0
回答所有的问题,但它也将有助于深入解释发生了什么事情,我认为这是OP与最大的斗争。 – Zabuza
答
从Scanner.next()doc:
查找并返回此扫描程序中的下一个完整标记。 完整的令牌前后有与匹配 的分隔符模式相匹配的输入。即使先前调用
hasNext
返回true
,此方法可能会在等待输入 进行扫描时阻止。
每次调用next()
方法,尝试读取输入,在你的榜样,你要调用的方法的两倍,这就是为什么你需要输入两个输入你到你的打印语句
'name.equals前(“samet”)'而不是'scan.next()。equals(“samet”)''。 'scan.next()'实际上扫描输入流中的下一个标记。如果您需要比较名称,则需要使用存储名称的变量。 –
'nextLine()'。第一个'next()'不会消耗'\ n',所以这被下一个消耗掉了。 –
你想达到什么目的?此代码确实需要2个输入,尽管您不使用第一个输入 –