2013-11-23 3 views
0

Выяснено. Спасибо, парни. Я знаю, что это не идеальный ответ, но я новичок в java.Сравнение строк строки Java

package Dr._Coles_Practice_Problems;

импорт java.util.Scanner;

общественного класса GpaCalc {

public static void main(String[] args) { 

    // Needed variables 

    double credits = 0.0; 

    double totalcredits = 0.0; 

    double grade = 0.0; 

    double qualitypoints = 0; 

    int classes; 

    String lettergrade; 

    Scanner input = new Scanner(System.in); 

    System.out.println("Enter the amount of classes for this semester"); 

    classes = input.nextInt(); 

    while (classes > 0) { 

    System.out.println("Enter the amount of credits for this class"); 

    credits = input.nextDouble(); 

    System.out.println("Enter the grade achieved for this class"); 

    lettergrade = input.next(); 

     if (lettergrade.equalsIgnoreCase("a")) { 

      grade += 4.00; 

     } 

     if (lettergrade.equalsIgnoreCase("a-")) { 

      grade += 3.67; 

     } 

     if (lettergrade.equalsIgnoreCase("b+")) { 

      grade += 3.33; 

     } 

     if (lettergrade.equalsIgnoreCase("b")) { 

      grade += 3.00; 

     } 

     if (lettergrade.equalsIgnoreCase("b-")) { 

      grade += 2.67; 

     } 

     if (lettergrade.equalsIgnoreCase("c+")) { 

      grade += 2.33; 

     } 

     if (lettergrade.equalsIgnoreCase("c")) { 

      grade += 2.00; 

     } 

     if (lettergrade.equalsIgnoreCase("c-")) { 

      grade += 1.67; 

     } 

     if (lettergrade.equalsIgnoreCase("d+")) { 

      grade += 1.33; 

     } 

     if (lettergrade.equalsIgnoreCase("d")) { 

      grade += 1.00; 

     } 

     if (lettergrade.equalsIgnoreCase("f")) { 

      grade += 0.00; 

     } 

     classes--; 

     totalcredits += credits; 

    }  

    qualitypoints = grade * credits; 

    // GPA is calculated via total credits/total quality points 
    //of which are calculated by multiplying the credit(s) * the quality point value 


    System.out.println("Your total credit(s)are: " + totalcredits); 

    System.out.println("Your total quality points are: " + qualitypoints); 

    System.out.println("Your GPA is: " + (qualitypoints/totalcredits)); 
} 

}

/*

Оценочная шкала Блумсберге университета

A = 4,00 Улучшенный Достижение

A- = 3,67

В + = 3.33

В = 3,00 Выше среднего Достижении

B- = 2,67

С + = 2.33

С = 2.00 Средняя Достижение

C- = 1,67

D + = 1.33

D = 1,00 Минимальное Достижение

Р = 0,00 Неудача

*/

+2

FYI, в будущем это поможет, если вы сказали, что был не прав (ошибка компиляции, ошибки во время выполнения, неправильный вывод и т. д.) –

+0

Я просто делал то, что сказал автокоррект. Ниже 15 значков ... отредактируйте свое сообщение, иначе подождите 6 часов, чтобы опубликовать окончательную версию. – Espryon

ответ

4
if (grade.toLowerCase() == "a") { 

С "a" и grade.toLowerCase() являются объектами (типа String), сравнивая их WIH == сравнивает ссылки объектов, а не содержимое строки.

Использование equals() способ.

if (grade.toLowerCase().equals("a")) { 

Более использование equalsIgnoreCase способ игнорировать регистр.

if (grade.equalsIgnoreCase("a")) { 
0

В дополнение к ответу Суреш Атты, я хотел бы предложить вам использовать метод, описанный ниже, чтобы сравнить String:

"a".equals(grade){ 
    // something 
} 

Причина в том, что защищает вас от NullPointerException с.

0

Сравнение объектов в Java с использованием == идет по ссылке с объекта, а не по контенту. Используйте equals() или equalsIgnoreCase(), чтобы сравнить строки, в зависимости от ваших потребностей.

0

Вы делите на ноль.

Игнорирование часть вашего кода, вы в основном делают это:

while (credits/3 > 0) { 
    credits = credits - 3; 
} 
grades/credits; 

Когда ваш заканчивается в то время как цикл, кредиты будут < = 0.

0

Как уже указывали другие, вы должны использовать equals() вместо == для сравнения строк.

Чтобы сделать код более компактным и удобным для чтения, вы можете также использовать переключатель заявление:

switch (grade.toLowerCase()) { 

    case "a": 
     grades += 4.00; 
     break; 

    case "a-": 
     grades += 3.67; 
     break; 

    /* etc. */ 

} 
Смежные вопросы