這是我的第一個Java程序。它應該允許用戶輸入介於0和100之間的整數等級。如果用戶輸入負值,則停止輸入數據並顯示統計信息。我不能包含靜態方法,數學或數組。Java從掃描儀輸入中找到最小值始終爲零
我遇到了最低等級minGrade的問題。無論程序運行時輸入什麼值,minGrade總是爲零。我一直在修補這一段時間,但無濟於事。
我遇到的另一個問題是,當我運行程序時,輸入一串int,但輸入一些字母以測試錯誤檢查時,程序會解析用戶兩次而不是一次。
"Please enter a numeric grade between 0 and 100, inclusive, and press Enter:"
各代碼是:
import java.util.Scanner;
public class Grades {
public static void main(String[] args)
{
Scanner keyboard = new Scanner(System.in);
System.out.println("Please enter the Course Code and and press Enter:");
String courseCode = keyboard.nextLine();
System.out.println("You entered: " + courseCode + "\n");
int grade = 0;
int numberOfGrades = 0;
int maxGrade = 0;
int minGrade =0;
double avgGrade = 0;
int sumGrades = 0;
int sentinel = 0;
do
{
**System.out.println("Please enter a numeric grade between 0 and 100, inclusive, and press Enter:");**
while(!keyboard.hasNextInt())
{
System.out.println("Please enter a numeric grade between 0 and 100, inclusive, and press Enter:");
keyboard.nextLine();
}
grade = keyboard.nextInt();
if((grade <=100) && (grade >= 0))
{
numberOfGrades++;
sumGrades += grade;
sentinel = 0;
if(maxGrade < grade)
maxGrade = grade;
**if(minGrade > grade)
minGrade= grade;**
}
else if(grade > 100)
{
System.out.println("The entered number was greater than 100. Please enter a number between 0 and 100 inclusive, "
+ "or input a negative number to exit Grade entry");
sentinel = 0;
}
else if(grade <0)
{
grade = 0;//maybe?
sentinel = -1;
}
}
while((grade >100) || (sentinel == 0));
avgGrade = (sumGrades/numberOfGrades);
System.out.println("You entered: " + "\ngrade: " + grade + "\n" + "sentinel: "+ sentinel +
"\nSum of Grades: " + sumGrades +"\nNumber of Grades: "+ numberOfGrades +"\nAverage Grades: " + avgGrade
+ "\nMaxium Grade: "+ maxGrade+"\nMinimum Grade: "+minGrade);
}
}
在此的任何輸入,我的用於我的第一java程序代碼,或其他任何的形式,將不勝感激。
我遇到的最後一個問題是平均成績總是排在第十位。我怎麼能得到第十名不是零和實際平均金額?
是的,我的意思是詢問用戶兩次。 '.nextLine()'和'nextInt(),我會如何確保當數字不是'Int'時它不會詢問兩次。我自己並不完全理解這兩個語句,java文檔沒有太多幫助。 謝謝,雙轉換工作。我試過avgGrade = 1.0d *(x/y),它似乎沒有工作 – SeesSound
@SajSeesSound你需要將其中一個項目轉換爲雙倍,就像我在代碼示例中顯示的那樣。問題是(x/y)會截斷爲int,所以你需要做((double)x/y)。我正在處理雙重提示問題。 – River
最後,「等級」的值在第一個「if」語句之前不會更改爲零以外的其他值嗎?如果是這樣,爲什麼計算值會重複爲零? – SeesSound