2017-07-03 114 views
-5

对于下面的代码,我必须在输入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"); 
      } 

    } 

} 
+1

'name.equals前(“samet”)'而不是'scan.next()。equals(“samet”)''。 'scan.next()'实际上扫描输入流中的下一个标记。如果您需要比较名称,则需要使用存储名称的变量。 –

+0

'nextLine()'。第一个'next()'不会消耗'\ n',所以这被下一个消耗掉了。 –

+0

你想达到什么目的?此代码确实需要2个输入,尽管您不使用第一个输入 –

回答

4

你忽略的name

的价值和你的if语句实际上是被忽略的,以及由于在最后的分号

试试这个

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

scan.next()每次调用它时都会等待新的输入。

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

+0

回答所有的问题,但它也将有助于深入解释发生了什么事情,我认为这是OP与最大的斗争。 – Zabuza

0

从Scanner.next()doc:

查找并返回此扫描程序中的下一个完整标记。 完整的令牌前后有与匹配 的分隔符模式相匹配的输入。即使先前调用hasNext返回 true,此方法可能会在等待输入 进行扫描时阻止。

每次调用next()方法,尝试读取输入,在你的榜样,你要调用的方法的两倍,这就是为什么你需要输入两个输入你到你的打印语句