这里是Java的初学者。所以我不知道该怎么做,所以如果用户输入是"A+“,我将得到4.0,而不是更高?类似地,对于"F",我想要使F,F-,F+都得到0.0GPa。我想,我要么要为字母A和F加上特殊的参数,要么只是在GPA上加上一个“限制”或“上限”。我的意思是让我的双gpa值只能是0-4.0。您认为最有效的任何一种方法都可以,我只是不熟悉Java的语法和词汇表,甚至不知道从哪里开始。
这是我的密码:
import java.util.*;
public class HomeworkCalculator {
public static void main(String[] args) {
Scanner in = new Scanner(System. in );
String grade, letter1, letter2;
System.out.print("Enter a letter grade: ");
grade = in .nextLine();
letter1 = grade.substring(0, 1);
letter2 = grade.substring(1, 2);
double gpa = 0;
if (letter1.equals("A")) {
gpa = 3.9;
} else if (letter1.equals("B")) {
gpa = 3.0;
} else if (letter1.equals("C")) {
gpa = 2.1;
} else if (letter1.equals("D")) {
gpa = 1.2;
} else if (letter1.equals("F")) {
gpa = 0;
}
if (letter2.equals("+")) {
System.out.println(gpa + 0.3);
} else if (letter2.equals("-")) {
System.out.println(gpa - 0.3);
}
}
}我试着单独编写用户输入'A+‘的代码,在程序结束时只等于4.0,但是当我只想要一个值时,输出只给我4.0,然后再给我4.2。然后,我尝试添加一个中断或返回,看看我是否能够做到,这样如果输入是'A+‘,它就会自动地立即结束代码--希望能够阻止任何额外的输出发生,但这没有发生。
有什么建议吗?
发布于 2014-02-08 03:04:59
另一种可能是,在整个代码部分的末尾,您可以添加:
if (gpa > 4) gpa = 4;
if (gpa < 0) gpa = 0;
if (letter1.equals("F") && letter2.equals("+")) gpa = 0;发布于 2014-02-08 03:02:39
if (letter1.equals("A") && letter2.equals("+")) gpa = 4.0;
else if(letter1.equals("A"))
{gpa = 3.9;}
else if(letter1.equals("B"))
{gpa = 3.0;}
else if(letter1.equals("C"))
{gpa = 2.1;}
else if(letter1.equals("D"))
{gpa = 1.2;}
else if(letter1.equals("F"))
{gpa = 0;}
if (!letter1.equals("F")) {
if(letter2.equals("+") && !letter1.equals("A")) gpa += 0.3;
else if(letter2.equals("-")) gpa -= 0.3;
}发布于 2014-02-08 04:31:24
这里的天真解决方案:
package testgrade;
import java.util.*;
public class Tg {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String grade;
System.out.print("Enter a letter grade: ");
grade = in.nextLine();
double gpa = 0.0;
boolean bad_entry = false;
int entered_grade_len = grade.length();
// Verify entered content
if (entered_grade_len <= 2 && entered_grade_len > 0) {
if((grade.substring(0).toUpperCase() == "A") ||
(grade.substring(0).toUpperCase() == "B") ||
(grade.substring(0).toUpperCase() == "C") ||
(grade.substring(0).toUpperCase() == "D") ||
(grade.substring(0).toUpperCase() == "F"))
{
switch(entered_grade_len)
{
case 2:
if((grade.substring(1) == "+") ||
(grade.substring(0).toUpperCase() == "-"))
break;
default:
bad_entry = true;
break;
}
}
}
if(bad_entry)
{
System.out.println("Usage: Enter grades in the normal spectrum from A(+/-) to F");
System.out.println("eg: A+, B-, D+, C, F...");
return;
}
String lettergrade = grade.substring(0,1).toString().toUpperCase();
switch (lettergrade) {
case "A":
gpa = 4.0;
break;
case "B":
gpa = 3.0;
break;
case "C":
gpa = 2.0;
break;
case "D":
gpa = 1.0;
break;
case "F":
gpa = 0.0;
break;
default:
break;
}
if (grade.length() > 1) {
lettergrade = grade.substring(1, 2);
switch (lettergrade) {
case "+":
if (gpa <= 3 && gpa >= 1.0)
gpa += 0.3;
break;
case "-":
if (gpa <= 4 && gpa >= 1.0)
gpa -= 0.3;
break;
default:
break;
}
}
System.out.println(gpa);
in.close();
}
}这可以用一些正则表达式来进行比较,但是对于快速和肮脏的比较,这是可以改进的。(A = 3.9?如果gpa =4,bah...but ()= 1) gpa -= 0.1,您可以这样做。
https://stackoverflow.com/questions/21641354
复制相似问题