在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它会抛出错误,我不明白.....
感谢任何帮助!!
答案 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);
// }
}
}