2016-11-28 52 views
0
import java.util.Scanner; 
public class HelloWorld{ 
    public static void main(String args[]){ 
    Scanner dd = new Scanner(System.in); 
    System.out.println("Enter name"); 
    String b = dd.nextLine(); 
    System.out.println("Enter num"); 
    int num = dd.nextInt(); 
    } 
} 

而且两个多用户输入程序有什么区别?

import java.util.Scanner; 
public class HelloWorld{ 
    public static void main(String args[]){ 
     Scanner dd = new Scanner(System.in); 
     System.out.println("Enter num"); 
     int num = dd.nextInt(); 
     System.out.println("Enter name"); 
     String b = dd.nextLine(); 
    } 
} 

为什么后者不peoperly工作(并不让我输入其名称),而第一个呢?

我编写了一个新版本,没有那个烦人的“扫描仪扫描=新的扫描仪”。 那么这个解决方案呢?它可能有什么缺点?

import java.util.Scanner; 
public class HelloWorld{ 
public static void main(String args[]){ 
    System.out.println("Enter num"); 
    int i = new Scanner(System.in).nextInt(); 
    System.out.println("Enter name"); 
    String b = new Scanner(System.in).nextLine(); 
    } 
} 
+0

也许你应该使用nextLine()古今中外值转换成正确的类型 – cralfaro

回答

0

在第二种情况下,nextInt()不扫描过在按下返回键时用户输入的换行符。

在第一种情况下,首先遇到nextLine(),所以问题不会表现出来。

故事的寓意是总是使用nextLine()并相应地解析得到的字符串。使用像Integer#parseInt这样的字符串转换为整数。

+0

它说:“字符串不能转换成int” –

+0

当然会的。看到我最后一个新的句子。 – Bathsheba

0

第二个程序需要一个Int,然后是一个名字。因此,输入名称时可能会出错。