我希望能夠使用陣列 for 回圈和 if else 陳述句計算用戶的成績,但我的作業結果總是列印失敗的成績,即使成績是 90。
import java.util.Scanner;
public class ArrayInputGrade {
public static void main(String[] args) {
// TODO code application logic here
Scanner input = new Scanner(System.in);
//allow user input;
System.out.println("How many grades you want to enter?");
int num = input.nextInt();
int array[] = new int[num];
System.out.println("Enter the " num " numbers now.");
for (int grade = 0; grade < array.length; grade ) {
array[grade] = input.nextInt();
if(grade <= 100 && grade >= 90){
System.out.println("Excellent: Grade A");
}else if(grade <= 90 && grade >= 80){
System.out.println("Very Good: Grade B");
}else if(grade <= 80 && grade >= 70){
System.out.println("Good: Grade C");
}else if(grade <= 70 && grade >= 60){
System.out.println("Satisfactory: Grade D");
}else if(grade <= 60 && grade >= 50){
System.out.println("Work Hard: Grade E");
}else if(grade <= 50 && grade >= 40){
System.out.println("Just Passed: Grade F");
}else {
System.out.println("Failed!");
}
}
}
uj5u.com熱心網友回復:
罪魁禍首是for回圈,
for (int grade = 0; grade < array.length; grade ) {
}
因為您正在檢查 if 條件中的回圈變數grade。
修改回圈如下,
for (int i = 0; i < array.length; i ) {
int grade = input.nextInt();
array[i] = grade;
}
uj5u.com熱心網友回復:
grade變數是一個索引。您正在使用此索引將值讀入陣列。
array[grade] = array[grade] = input.nextInt();
但是,當您檢查等級值時,您并沒有檢查索引處存盤的等級 - 您正在檢查索引而不是該索引處的值。
if(grade <= 100 && grade >= 90){ ....
簡單的答案是檢查存盤的等級而不是索引。例如...
if (array[grade] <= 100 && array[grade] >= 90) { ...
但是,您可能會受益于重命名一些東西(陣列變成等級,等級變成索引)并將檢查邏輯移動到單獨的方法中。所以,你會有類似...
for (int index = 0; index < grades.length; index ) {
grades[index] = in.nextInt();
System.out.println(checkGrade(grades[index]));
}
....
private String checkGrade(int grade) {
if (grade > 100) {
return "Grade is out of range " grade;
} else if (grade >= 90) {
return "Excellent: Grade A";
} else if .... etc
...
}
uj5u.com熱心網友回復:
package com.alpian.imm.backend;
import java.util.Random;
import java.util.Scanner;
import java.util.stream.IntStream;
public class ArrayInputGrade {
public static void main(String[] args) {
// TODO code application logic here
Scanner input = new Scanner(System.in);
//allow user input;
System.out.println("How many grades you want to enter?");
int num = input.nextInt();
// Simulate logic
Random random = new Random();
int[] array = IntStream.range(0, num).map(v -> random.nextInt(101)).toArray();
for (int grade : array) {
if (grade <= 100 && grade >= 90) {
System.out.println("Excellent: Grade A");
} else if (grade <= 90 && grade >= 80) {
System.out.println("Very Good: Grade B");
} else if (grade <= 80 && grade >= 70) {
System.out.println("Good: Grade C");
} else if (grade <= 70 && grade >= 60) {
System.out.println("Satisfactory: Grade D");
} else if (grade <= 60 && grade >= 50) {
System.out.println("Work Hard: Grade E");
} else if (grade <= 50 && grade >= 40) {
System.out.println("Just Passed: Grade F");
} else {
System.out.println("Failed!");
}
}
}
}
輸出:
How many grades you want to enter?
5
Failed!
Just Passed: Grade F
Good: Grade C
Excellent: Grade A
Just Passed: Grade F
Process finished with exit code 0
uj5u.com熱心網友回復:
public class UserGrade{
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("How many grades you want to enter?");
int num = input.nextInt();
int array[] = new int[num];
System.out.println("Enter the " num " numbers now.");
for (int i = 0; i < array.length; i )
{
int grade = input.nextInt();
array[i] = grade;
if (grade <= 100 && grade >= 90)
{
System.out.println("Excellent: Grade A");
}
else if (grade <= 90 && grade >= 80)
{
System.out.println("Very Good: Grade B");
}
else if (grade <= 80 && grade >= 70)
{
System.out.println("Good: Grade C");
}
else if (grade <= 70 && grade >= 60)
{
System.out.println("Satisfactory: Grade D");
}
else if (grade <= 60 && grade >= 50)
{
System.out.println("Work Hard: Grade E");
}
else if (grade <= 50 && grade >= 40)
{
System.out.println("Just Passed: Grade F");
}
else
{
System.out.println("Failed!");
}
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/517978.html
標籤:爪哇数组for循环if 语句
