2016-11-25 59 views
-2

这是我的代码,我遇到了麻烦,idk为什么特别是这应该相当简单。我想提示用户输入一个数字,然后将全局声明的int设置为该数字。 “成员” int值初始化为0,不管我怎么努力,当我打印出来的成员,它说0,即使我在一个号码中输入> 0扫描仪提示时未设置int

 Scanner sc = new Scanner(System.in); // Create a scanner object 
    System.out.println("Enter amount of members"); // Prompt user 

    while (!sc.hasNextInt()) { 
     sc.next(); 
     try { 
      members = sc.nextInt(); // set entered value to members int 
     } catch (Exception e) { // catch exceptions. 
      System.out.println("Error please enter a number greater than 0"); 
      sc.nextLine(); // clear line to prevent infinite loop 
     } 
    } 
    sc.nextLine(); // clear input 
+1

什么是'sc.next();'在做什么? –

+0

也是什么'sc.nextLine(); //清除行以防止无限循环? –

+0

你要求用户给出一个挂载值,然后使用'while(!sc.hasNextInt())'忽略Integer。我无法弄清楚你想要什么。 – TomN

回答

-1

使用sc.nextInt()sc.hasNext()对while循环的条件。我们不使用sc.nextLine();来清除行。

你需要学习更多关于如何使用扫描仪, Java Scanner Continuous User input?

+0

即使当我删除那个和sc时。 nextLine()它仍然导致成员int为0时,我打印出idk为什么它不工作。我有它宣布全球公共静态成员= 0; – Nick

+0

我编辑了答案,以便您更好地理解 – Amita

+0

明白了,谢谢! – Nick