2014-02-06 25 views
-1

我是新来的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-返回0相同的GPA就像等级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) 
+1

此代码是合法的(除了开头的'其他if'必须是早期的“if”的一部分)。无论你想要什么,我都看不出来。您可能错误地检查了一个变量('plusMinusSign')用于'+',另一个变量('letter')用于'-'。 – ajb

+0

你可以检查输入的输入是否包含+或 - 当if语句包含+或其他时,如果它包含 - – WonderWorld

+1

不要抱歉。首先要清楚。 (记住,除了你以外没有人知道你在说什么你的术语的具体含义域的背景下,也没有)。 – Stewart

回答

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); 
} 
+1

我想知道应该输入什么来使其工作。 B + ...? – WonderWorld

+1

@Xbit我想知道,以及大声笑。 OP没有给我们太多的帮助。我假设'letter'和'plusMinusSign'是字符串(公平假设),并且他已经在用户输入中获取这些字符串。 –

+0

对于模糊的帖子感到抱歉,这正是我想要做的。我想我必须将我的字母等级设置为双倍,但我并没有考虑从if语句之后删除所有“system.out.print's”。我将在帖子中加入一个编辑来显示我的整个代码。 – SJSharks

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 {...} 
+0

副手它看起来像你和OP正试图完成不同的任务。 – ajb

+0

@ajb在我发布OP后编辑了他的问题。我会相应地编辑我的答案。 – Prince

+0

他也想检查+和 - ,我没有看到你的解决方案。 – WonderWorld

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); 
} 
+0

请记住,您正在使用'float' –

+0

您的观点是什么? – Stewart

+0

尝试编译它lol –