2017-10-14 80 views
0

我在java中使用扫描仪,当我在1级书本和2级排除失败成绩之间进行选择时)需要两个输入而不是一个,并且当循环开始时,它将第二个输入添加到总和在输入等级前添加数字

import java.util.Scanner; 

public class BarrogoMidtermExam { 


    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     String Myname; 
     Scanner mname=new Scanner(System.in); 
     System.out.println("Enter name: "); 
     Myname=mname.nextLine(); 

     System.out.print("Gradebook Type(1- Gradebook, 2-Exclude Failing grades): "); 
     Scanner gradebook = new Scanner(System.in); 
     int i=gradebook.nextInt(); 

     if (i==1) 
     { 

      Scanner grade=new Scanner(System.in); 
      int average=0; 
      int total=0; 
      int g = grade.nextInt(); 
      String outputString = ""; 
      while (g !=0) 
      { 
       outputString += g + " "; 
       total +=g; 
       average /= total; 

       System.out.println("enter grade (enter 0 to stop entering grade): "); 
      g = grade.nextInt(); 

      } 
      System.out.println(Myname); 
      System.out.println("Entered Number:\t" + outputString); 
      System.out.println("The Sum:\t\t" + total); 
     } 




    } 
} 
+1

问题是什么 – MCMastery

+1

每次需要输入时,请不要创建一个新的'Scanner'。创建一个**扫描仪并使用它**每次**你需要输入。 –

回答

0

的问题是,当你初始化int g = grade.nextInt()你实际上是在要求用户输入一个值,这就是为什么你的节目“问”进入其中等级被输入并随后循环的任何值是以前的两倍分配给g最终成为平均数的一部分。您可以按如下修改代码:

// Scanner grade=new Scanner(System.in);// no need to create another scanner 
int total=0; 
int g = 0; 
String outputString = ""; 
while(true) { // Create an infinite loop 
    System.out.println("enter grade (enter 0 to stop entering grade): "); 
    g = mname.nextInt(); 
    if(g == 0) { // Break from the infinite loop if the user entered 0 
     break; 
    } 
    outputString += g + " "; 
    total +=g; 
} 
0

我不完全相信你问什么,但你的if语句中,你有这样的下面的代码:

Scanner grade=new Scanner(System.in); 
int g = grade.nextInt(); 

,这意味着您的变量g是要求来自用户的输入,然后在你的while循环中有另外一个,这是内的你的if语句,它也要求用户输入一些g的值。

您的程序不需要多个Scanner。一个就足够了。 除了使用while循环,你也可以使用一个for循环的代码如下:

int average=0; 
int total=0; 
int g; 
String outputString = ""; 

// I'm asking the user how many grades do they want to enter 
System.out.print("Enter the number of Grades you want in your Gradebook:"); 
int n = mname.nextInt(); 

for(int j = 0; j < n; j++){ 
    System.out.println("Enter grade: "); 
    g = mname.nextInt(); 
    outputString += g + " "; 
    total +=g; 
    average = total/n; 
    } 
System.out.println(Myname); 
System.out.println("Entered Number:\t" + outputString); 
System.out.println("The Sum:\t\t" + total); 

而且,原来,你有:

average /= total; 

这将永远给你0,所以您必须将您的变量总数除以输入的等级数以得到平均值。

如果你想在while循环中使用这段代码,上面的参考是一个很好的参考,但我相信你需要一个计数器来跟踪输入等级的数量来获得平均值。