我很难理解为什么我的程序仅在我输入正整数值时才起作用。我认为这与扫描仪有关,但有关它的更多信息是有帮助的。
import java.util.Scanner;
class integerThree {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int x = 0;
int y = 0;
int z = 0;
int smallest = 0;
int largest = 0;
System.out.print("Enter first integer: ");
x = input.nextInt();
System.out.print("Enter second integer: ");
y = input.nextInt();
System.out.print("Enter third integer: ");
z = input.nextInt();
smallest = x;
if (y < smallest) {
smallest = y;
}
if (z < smallest) {
smallest = z;
largest = x;
if (y > largest) {
largest = y;
}
if (z > largest) {
largest = z;
}
System.out.printf("%d+%d+%d=%d%n", x, y, z, (x+y+z));
System.out.printf("%s=(%d+%d+%d)/3=%d%n", "Integer Avg", x, y, z, (x + y + z) / 3);
System.out.printf("%d*%d*%d=%d%n", x, y, z, (x * y * z));
System.out.printf("Of %d, %d, and %d %d is the smallest.%n", x, y, z, smallest);
System.out.printf("Of %d, %d, and %d %d is the largest.%n", x, y, z, largest);
}
}
}
输出应该添加三个数字,找到三个数字的平均值,乘以它们,找到最低数字,最后找到最高数字。有没有办法让负面不会导致错误?
答案 0 :(得分:1)
在你的第二个If语句之后,你似乎错过了一个右括号'}'。因此,只有最终输入值Z最小时,您的程序才会起作用。除了这个程序似乎对我有用。
所以改变你的第二个如果:
if (z < smallest) {
smallest = z;
}
您还需要删除最后3个结束括号中的一个。
答案 1 :(得分:0)
您需要检入输入,因为用户无法输入负整数或零整数,如下所示。
System.out.print("Enter positive integer: ");
int validNumber;
while (true) {
int inputNumber = scanner.nextInt();
if (inputNumber > 0) {
validNumber = inputNumber;
return;
} else {
System.out.println("integers <= 0 not allowed, try again");
}
}
答案 2 :(得分:0)
您的问题与括号有关。
根据您的代码,正确的缩进是:
if (z < smallest) {
smallest = z;
largest = x;
if (y > largest) {
largest = y;
}
if (z > largest) {
largest = z;
}
System.out.printf("%d+%d+%d=%d%n", x, y, z, (x+y+z));
System.out.printf("%s=(%d+%d+%d)/3=%d%n", "Integer Avg", x, y, z, (x + y + z) / 3);
System.out.printf("%d*%d*%d=%d%n", x, y, z, (x * y * z));
System.out.printf("Of %d, %d, and %d %d is the smallest.%n", x, y, z, smallest);
System.out.printf("Of %d, %d, and %d %d is the largest.%n", x, y, z, largest);
}
仅当z
小于smallest
时,程序结尾附近的代码才会运行。确保您的{
和}
匹配,并放置在您希望的位置。