Java 使用 if 语句、for 循环和方法调用

Java using if statement, for loop and method call

在 main 中,创建一个 for 循环,它将询问数字等级并使用 getLetterGrade 方法打印出字母等级,直到用户输入 -1。所以实际上我必须要求用户输入 0 到 100 之间的等级,它会在方法中查找并打印适当的等级?正确的???所以这是代码

System.out.println("Please enter you grade total: ");
Scanner Keyboard = new Scanner(System.in);
studentGrade = Keyboard.nextInt();


for(studentGrade = 0; studentGrade < 1; ++studentGrade){
    System.out.print(getLetterGrade);

创建一个名为 getLetterGrade 的方法。 getLetterGrade 方法获取 0-100 之间的等级,然后打印出相应的字母等级。等级范围为 A:100-90 B:80-89 C:70-79,D:60-69,F:0-59。在 main 中,创建一个 for 循环,它将询问数字等级并使用 getLetterGrade 方法打印出字母等级,直到用户输入 -1。"

这是我的代码:我使用 if,else if 条件编写的。我不明白的是我是否必须在 main 或方法中写条件。通常我对编码没有问题,但这件事让我感到困惑。我考虑过使用 case,但是 if,else if 条件似乎更直接。

import java.util.Scanner;

public class getLetterGrade {

public static void getLetterGrade(String getLetterGrade){


int studentGrade = 0;

    if(studentGrade >= 90) getLetterGrade("A");
    else if(studentGrade >= 80) getLetterGrade("B");
    else if(studentGrade >= 70) getLetterGrade("C");
    else if(studentGrade >= 60) getLetterGrade("D");
    else if(studentGrade >= 0) getLetterGrade("F");
    else 
        System.out.println("you have entered incorrect integer");

int i = 0;

for (i = 0; i < 1; i++){
    System.out.print(studentGrade + " ");
}

System.out.println();

}

public static void main(String[] args) {

    int studentGrade = 0;
    getLetterGrade("A");
    getLetterGrade("B");
    getLetterGrade("C");
    getLetterGrade("D");
    getLetterGrade("F");

    System.out.println("Please enter you grade total: ");
    Scanner Keyboard = new Scanner(System.in);
    studentGrade = Keyboard.nextInt();


    for(studentGrade = 0; studentGrade < 1; ++studentGrade){
        System.out.print(studentGrade);
    }
}




}

我知道我必须打印 getLetterGrade 但是当我尝试打印 getLetterGrade 时它会抛出错误,我不明白......

感谢所有帮助!!

您的 getLetterGrade 方法是递归的。在该方法中,您设置 studentGrade=0,因此该方法调用 getLetter("A")。重复此操作,导致计算器溢出错误。

我认为这是你想要的:

public static void getLetterGrade (int studentGrade) {
    if (studentGrade >= 90) System.out.println("A");
    else if (studentGrade >= 80) System.out.println("B");
    else if (studentGrade >= 70) System.out.println("C");
    else if (studentGrade >= 60) System.out.println("D");
    else if (studentGrade >= 0) System.out.println("F");
    else System.out.println("You have entered an incorrect integer.");
}

在你的主要方法中,我认为这就是你想要的:

public static void main(String[] args) {
    Scanner keyboard = new Scanner(System.in);
    int studentGrade = keyboard.nextInt();

    while (studentGrade != -1) {
        getLetterGrade(studentGrade);
        studentGrade = keyboard.nextInt();
    }
}

在main方法中不能使用for循环,因为事先不知道用户要输入多少次。另一方面,while 循环检查输入是否不是 -1,然后打印出每次迭代的成绩。

您可能需要查看有关 for 循环的教程。在 for 循环中,变量只是一个索引。它没有您之前分配给它的任何值。

试试这个。

package com.health;

导入java.util.Scanner;

public class 测试 {

public static void getLetterGrade(int studentGrade) {

    // int studentGrade = 0;

    if (studentGrade >= 90)
        System.out.println("A");
    else if (studentGrade >= 80)
        System.out.println("B");
    else if (studentGrade >= 70)
        System.out.println("C");
    else if (studentGrade >= 60)
        System.out.println("D");
    else if (studentGrade >= 0)
        System.out.println("E");
    else
        System.out.println("you have entered incorrect integer");

    // int i = 0;
    //
    // for (i = 0; i < 1; i++) {
    // System.out.print(studentGrade + " ");
    // }
    //
    // System.out.println();

}

public static void main(String[] args) {

    int studentGrade = 0;
    // getLetterGrade("A");
    // getLetterGrade("B");
    // getLetterGrade("C");
    // getLetterGrade("D");
    // getLetterGrade("F");

    while (true) {
        System.out.println("Please enter you grade total: ");
        Scanner Keyboard = new Scanner(System.in);
        studentGrade = Keyboard.nextInt();

        if (studentGrade == -1) {
            break;
        } else {
            getLetterGrade(studentGrade);
        }

    }

    // for (studentGrade = 0; studentGrade < 1; ++studentGrade) {
    // System.out.print(studentGrade);
    // }
}

}