在输入成绩之前添加数字

时间:2017-10-14 02:54:05

标签: java

我在java中使用过扫描仪,当我在1-gradebook和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);
        }




    }
}

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分: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.所以你必须将变量总数除以输入的等级数n来得到平均数。

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