2015-04-22 62 views
-3

主要創建一個for循環,它將要求數字等級並使用getLetterGrade方法打印出字母等級,直到用戶輸入-1。所以實際上我不得不要求用戶輸入介於0和100之間的等級,它會查看方法並打印適當的等級?正確???所以這是代碼使用if語句的Java,for循環和方法調用

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。主要是創建一個for循環,它將要求數字等級並使用getLetterGrade方法打印出字母等級,直到用戶輸入-1。「

這是我的代碼:我用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它拋出的錯誤,我不明白.....

感謝任何和所有的幫助!

+0

我看來像你獲得計算器錯誤,因爲你的getLetterGrade是遞歸無限 – JRowan

+0

在主,創建一個for循環,會要求數字等級和用途getLetterGrade方法打印出字母等級,直到用戶輸入-1。所以實際上我不得不要求用戶輸入介於0和100之間的等級,它會查看方法並打印適當的等級?正確???所以這裏是代碼System.out.println(「請輸入你的成績總數:」); 掃描儀鍵盤=新掃描儀(System.in); studentGrade =鍵盤。nextInt(); for(studentGrade = 0; studentGrade <1; ++ studentGrade){ System.out.print(studentGrade); – JavaCoder

回答

0

您的getLetterGrade方法是遞歸的。在該方法中,您設置studentGrade = 0,因此該方法調用getLetter(「A」)。這重複,這導致stackoverflow錯誤。

我想這是你想要什麼,而不是:

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."); 
} 

在main方法,我認爲這是你想要的東西:

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循環中,變量只是一個索引。它不具有您以前分配給它的任何值。

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

}

+0

傑羅姆,我不得不寫一個循環,這是什麼讓我混淆..... – JavaCoder

+0

我的意思是循環 – JavaCoder

+0

@JavaCoder你沒有辦法使用for循環,因爲你事先不知道有多少用戶想要輸入的次數。 – mmking