2016-02-05 114 views
-2

我真的很陌生,我一直在寻找数天来解决这个实验室的工作问题。这个实验非常简单,我相信我的逻辑有问题,但是当执行我的代码时,我没有得到期望的结果。该程序要求输入三个整数和一个字符。如果字符是'S',程序将打印前3个整数的总和,如果字符是'P',产品'A',平均值和其他任何字符都会打印出错误。使用If/Else语句将字符串转换为字符

以下是我的代码。它要求三个整数和一个字符,但结果总是一个错误,即使我输入'S','P'或'A'。

任何帮助将不胜感激。

谢谢, 乔

int n1, n2, n3; 
    String numberFromKB; 
    String charFromKB; 
    Scanner keyboard = new Scanner (System.in); 

    numberFromKB = JOptionPane.showInputDialog("Enter the first number."); 
    n1 = Integer.parseInt(numberFromKB); 

    numberFromKB = JOptionPane.showInputDialog("Enter the second number."); 
    n2 = Integer.parseInt(numberFromKB); 

    numberFromKB = JOptionPane.showInputDialog("Enter the 3rd number."); 
    n3 = Integer.parseInt(numberFromKB); 

    charFromKB = JOptionPane.showInputDialog(null, "Enter a character:"); 
    if (charFromKB = "s") 
    { 
     System.out.println("Sum of integers is: " + n1 + n2 + n3); 
    } 
    else if (charFromKB = "p") 
    { 
     System.out.println("Product of integers is: " + n1 * n2 * n3); 
    } 
    else if (charFromKB = "a") 
    { 
     System.out.println("Average of integers is: " + ((n1 + n2 + n3)/3f)); 
    } 
    else 
    { 
     System.out.println("ERROR!"); 
    } 

} 

}

+1

不能使用'='在'if'条款。你可能想要像这样使用'.equals()':'charFromKB.equals(“s”)' – 2016-02-05 15:55:32

+0

这甚至会编译吗? – ControlAltDel

+0

另请参阅=和== – Rodney

回答

0

你是我们与此

if (charFromKB = "s") 
{ 
     System.out.println("Sum of integers is: " + n1 + n2 + n3); 
} 

:荷兰国际集团平等的运营商,从而赋予charFromKB等于 “S”

相反,你应该使用字符串的equals方法,关掉这个

if (charFromKB.equals("s")) 
{ 
     System.out.println("Sum of integers is: " + n1 + n2 + n3); 
{ 

等于运算“ ==“不适合Strings。更多内容请见link

+0

我可以发誓我之前使用过.equals(),它没有工作,但这次它做到了。非常感谢你Serj! – Joe

-1

尝试使用==运算符,而不是=在如果(),所以不是

charFromKB = "p" 

charFromKB == "p" 
+0

之间的区别感谢您的回复!我最初使用==操作数,但遇到同样的问题。我的意思是我要求一个字符串,并且我说如果字符串是S,A或P,请运行println。除非我完全错误。 – Joe

+0

字符串比较应该使用Java中的equals方法完成,而不是使用引用相等。 –

+0

那么,我从来没有用过java,为什么呢? –

0

使用等于比较两个字符串。你的情况:if (charFromKB.equals("s"))所有的

int n1, n2, n3; 
    String numberFromKB; 
    String charFromKB; 

    String result = ""; 
    try { 
     numberFromKB = JOptionPane.showInputDialog("Enter the first number."); 
     n1 = Integer.parseInt(numberFromKB); 

     numberFromKB = JOptionPane .showInputDialog("Enter the second number."); 
     n2 = Integer.parseInt(numberFromKB); 

     numberFromKB = JOptionPane.showInputDialog("Enter the 3rd number."); 
     n3 = Integer.parseInt(numberFromKB); 

     charFromKB = JOptionPane.showInputDialog(null, "Enter a character:"); 

     if (charFromKB.equalsIgnoreCase("s")) { 
      result = "Sum of integers is : " + (n1 + n2 + n3); 
     } else if (charFromKB.equalsIgnoreCase("p")) { 
      result = "Product of integers is: " + (n1 * n2 * n3); 
     } else if (charFromKB.equalsIgnoreCase("a")) { 
      result = "Average of integers is: "+ ((n1 + n2 + n3)/3); 
     } else { 
      result = "ERROR"; 
     } 
    } catch (Exception e) { 
     result = "ERROR"; 
    } 

    JOptionPane.showMessageDialog(null, result); 
0

首先,你的if语句是错误的:

=用于分配,所以使用==而不是进行比较。

此外,双引号“”用于表示一个字符串,因此使用单引号“'来代替字符。所有的

if (charFromKB == 's') { ... } 

其次,小写的“, 'P',以及 'A' 是从大写不同 'S,' 'P' 和“A.

如果您想仅以大写字母阅读这些字母,则需要指定该字母。

if (charFromKB == 'A') { ... } 

如果你想读这些字母不区分大小写的,你有两个选择:

if (charFromKB == 'A' || charFromKB == 'a') { ... } 

if (Character.toLowerCase(charFromKB) == 'a') { ... } 
+0

charFromKB是一个字符串,因此您无法将其与char – Rodney