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

时间:2015-04-22 02:20:23

标签: java loops if-statement for-loop methods

在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编写,否则使用条件。我不明白的是,我必须在main或方法中写出条件。通常我没有编码问题,但这件事让我感到困惑。我虽然关于使用案例,但是如果,条件似乎更直接。

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它会抛出错误,我不明白.....

感谢任何帮助!!

2 个答案:

答案 0 :(得分:0)

您的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循环中,变量只是一个索引。它没有你之前分配给它的任何值。

答案 1 :(得分:0)

试试这个。

package com.health;

import java.util.Scanner;

公共课测试{

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);
    // }
}

}