我在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);
}
}
}
答案 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循环中使用这个代码,上面的参考是一个很好的参考,但我相信你需要一个计数器来跟踪输入的等级数以获得平均值。