所以我试图使用Java制作一个GPA计算器,而我却坚持使用其中一个步骤。我尝试编写一个代码,该代码接受用户的输入,然后将其转换为数字,然后我将使用该数字来计算GPA。到目前为止,这是我的代码:
public class data {
public static void main(String[] args) {
String english;
double v1 = 0;
Scanner reader = new Scanner(System.in);
System.out.println("Enter your english grade");
english= reader.nextLine();
if (strcmp(english,"A+")==0) {
v1 = 4.4;
}
if (strcmp(english,"A")==0) {
v1= 4.0;
}
if (strcmp(english,"A-")==0) {
v1= 3.6;
}
if (strcmp(english,"B+")==0) {
v1= 3.4;
}
if (strcmp(english,"B")==0) {
v1= 3;
}
if (strcmp(english,"B-")==0) {
v1= 2.6;
}
if (strcmp(english,"C+")==0) {
v1= 2.4;
}
if (strcmp(english,"C")==0) {
v1= 2;
}
if (strcmp(english,"C-")==0) {
v1= 1.6;
}
if (strcmp(english,"D+")==0) {
v1= 1.4;
}
if (strcmp(english,"D")==0){
v1= 1;
}
if (strcmp(english,"D-")==0) {
v1= 0.6;
}
if (strcmp(english,"F")==0) {
v1= 0.0;
}
else {
v1=0.0;
}
System.out.println(v1);
正如你所看到的,我只是为了检查而在最后打印出V1,但是它一直将V1设为0.0,即用户输入" F"时的值。如果我像这样评论那段代码:
/*if (strcmp(english,"F")==0) {
v1= 0.0;
}*/
然后它给出的输出值是0.6,即用户输入D-时的值。我想我应该把回归系统放在某个地方?虽然我真的不确定。任何帮助将不胜感激。
(如果它还没有建立,我是java的初学者:P)
编辑:伙计们,当我尝试使用Switch方法(我使用eclipse)时,它给了我这个错误:"无法为源级别低于1.7的值打开String类型的值。只允许使用可转换的int值或枚举常量"。它提供的解决方案会导致进一步的复杂化,所以我想避免使用switch语句:/答案 0 :(得分:7)
if (strcmp(english,"F")==0) {
v1= 0.0;
}
else {
v1=0.0;
}
除此之外你说 - 只要它不是F,就把它放在v1中。
答案 1 :(得分:5)
您编写的方式v1
将为0.0,除非english
为"F"
。
您需要使用else if
:
if (strcmp(english,"A+")==0) {
v1 = 4.4;
} else if (strcmp(english,"A")==0) {
// and so on
一些Java民众喜欢switch
字符串。但这是Java中一个相当新的特性,你需要引入的break
语句可能会混淆。
答案 2 :(得分:3)
使用switch
案例,如上所述。这会很有帮助,因为您可能会对大量if
语句感到困惑。
switch(english){
case "A+":
v1=4.4
break;
case "D-":
v1=0.6
break;
default:
v1=0.0;
break;
}
答案 3 :(得分:2)
您可能会发现这非常有用:
if(english.equalsIgnoreCase("A+"))
//do stuff...
else if(english.equalsIgnoreCase("A-"))
//do other stuff and so on...
equalsIgnoreCase()
方法忽略区分大小写,如果这不是您正在寻找的内容,则可以尝试使用equals()
。
新的Java版本也为字符串引入了switch-case,所以你的代码可以成为这个代码:
switch(english){
case "A+":
//do stuff...
break;
case "A-":
//do other stuff... and so on...
break;
}
答案 4 :(得分:0)
删除最后一个部分。它应该是好的。因为无论等级是什么,如果它不是“F”,它将转到else语句并将其设置为0.0
答案 5 :(得分:0)
else
附加到之前的if
;你做了很多事情然后最后你做if(...) { v1 = 0.0 } else { v1 = 0.0 }
,在任何情况下都将值设置为0.0。
您可能希望在每一步都使用else if
,这将解决当前的问题。
答案 6 :(得分:0)
您说如果字符串不是F,请设置值v1 = 0.0
if(strcmp(english,"F")==0) {
v1= 0.0;
}
else {
v1=0.0;
}
答案 7 :(得分:0)
试试这个:
String english= reader.nextLine();
if (english.equals("A+")) {
v1 = 4.4;
}
else if (english.equals("A")) {
v1= 4.0;
}
else if (english.equals("A-")) {
v1= 3.6;
}
else{
v1=0.0;
}
答案 8 :(得分:0)
基本上,无论用户输入F还是其他任何内容,您都要将值设置为零:
if (strcmp(english,"F")==0) {
v1= 0.0;
}
else {
v1=0.0;
}
请看这里,您已将v1
设置为0.0 if (strcmp(english,"F")==0)
,但如果用户未输入F.我认为您打算在if部分中添加其他内容而不是0.0 ,像这样:
if (strcmp(english,"F")==0) {
v1= /*something else*/;
}
else {
v1=0.0;
}
因为这似乎让你感到惊讶。
答案 9 :(得分:0)
将代码strcmp(英文," F")== 0替换为以下english.equal(" A +")