如何在Java中将打印输出设置为等于变量?

时间:2014-02-06 02:17:29

标签: java

我是Java和编程的新手,所以如果这个问题对你很明显,我会提前道歉。

我要做的是将行的打印输出设置为等于变量,以便我可以使用该变量来添加或减去.3,具体取决于是否键入了“ - ”或“+”符号在输入中。

编辑:

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;

System.out.println(gpa);

if(letter2.equals("+")) {
   System.out.println(gpa + 0.3);
} 

else if(letter2.equals("-")) {
System.out.println(gpa - 0.3);
}}}

所以现在问题是如果我只输入单个字母A,B,C,D,F它会给我一个错误。显然我希望这个程序能够接受单字母等级,除了将'A +'的输入默认为不高于4.0,并使其像F +或F-这样的输入返回相同的gpa为0就像等级一样F.我可能会愚弄更多的if / else语句和逻辑运算符..:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out   
of range
at java.lang.String.substring(String.java:1907)
at HomeworkCalculator.main(HomeworkCalculator.java:10)

3 个答案:

答案 0 :(得分:1)

考虑letterplusMinusSignString输入。考虑首先分配然后打印变量X

这样做:

float X = 0.0f;
if(letter.equals("B")) {
    X += 3.0;
    System.out.println(X);
} else if(plusMinusSign.equals("+") {
    X += 0.3;                   // instead of System.out.print(X + .3);
    System.out.println(X);
} else if (letter.equals("-") {
    X -= 0.3;                   // instead of System.out.print(X - .3);
    System.out.println(X);
}

如果您尝试从else if开始,它将无效。 尝试使用以下语法:

if (...) {...}
else if (...) {...}  // There can be multiple `else if` statements
else {...}

答案 1 :(得分:0)

这是你想要的吗?

String input;
double x = 0;

while((input = processInput()) != null) {
    if(input.equals("B")) {
        x = 3.0;
    } else if(input.equals("+")) {
        x += 0.3;
    } else if(input.equals("-")) {
        x -= 0.3;
    }
    System.out.println(x);
}

答案 2 :(得分:0)

我看到了多个问题:

  • else if(letter.equals("-")),但您的意思是测试plusMinusSign.equals("-")
  • 您从else if开始,而不仅仅是if
  • 您将打印结果硬编码为3.0,而不是使用任何变量。

以下是我认为您想要做的事情(还记得创建变量x作为小写):

double x = 0; // or whatever you want x to initially be

if(letter.equals("B")) {
    x = 3;
}
System.out.println(x);

if(plusMinusSign.equals("+")) {
    // x = x + 0.3; // I don't know if you want to modify the variable
    System.out.println(x + 0.3);
} else if(plusMinusSign.equals("-")) {
    // x = x - 0.3; // I don't know if you want to modify the variable
    System.out.println(x - 0.3);
}