我真的很喜欢编程,而且我一直在寻找能够解决这个实验室的日子。实验室非常简单,我相信我的逻辑是正确的,但是在执行我的代码时,我没有得到理想的结果。程序要求输入三个整数和一个字符。如果字符是'S',程序将打印前3个整数的总和,如果字符是'P',则产品'A',平均值和任何其他字符都会输出错误。
以下是我的代码。它要求三个整数和一个字符,但结果总是一个错误,即使我输入'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!");
}
}
}
答案 0 :(得分:0)
您正在使用相等的运算符,因此将charFromKB指定为等于" S"
相反,你应该使用字符串equals方法,切换它:
if (charFromKB = "s")
{
System.out.println("Sum of integers is: " + n1 + n2 + n3);
}
用这个:
if (charFromKB.equals("s"))
{
System.out.println("Sum of integers is: " + n1 + n2 + n3);
{
等于运算符" =="不能与Strings合作。有关详情,请参阅link。
答案 1 :(得分:0)
使用equals来比较两个String。在您的情况下: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);
答案 2 :(得分:0)
首先,你的if语句错了:
=用于赋值,因此请使用==进行比较。
另外,双引号“”用于表示String,因此请使用单引号''来表示字符。
if (charFromKB == 's') { ... }
其次,小写的','''和'a'与大写的'S','P'和'A。
不同。如果您只想以大写字母阅读这些字母,则需要指定。
if (charFromKB == 'A') { ... }
如果您希望读取这些字母不区分大小写,则有两种选择:
if (charFromKB == 'A' || charFromKB == 'a') { ... }
if (Character.toLowerCase(charFromKB) == 'a') { ... }
答案 3 :(得分:-1)
尝试在if()中使用==运算符而不是=,而不是
charFromKB = "p"
写
charFromKB == "p"