Java 哨兵值实现
问题: 编写一个带有循环的程序,允许用户输入一系列非负整数。用户应输入-99以表示系列结束。除了-99作为sentinel值外,不要接受任何负整数作为输入(实现输入验证)。输入所有数字后,程序应显示输入的最大和最小数字 问题:在执行循环时遇到问题。sentinel值用于退出循环,但它仍然保留最小值和最大值。有人能帮我吗?我是第一次使用Java并尝试学习Java 代码:Java 哨兵值实现,java,Java,问题: 编写一个带有循环的程序,允许用户输入一系列非负整数。用户应输入-99以表示系列结束。除了-99作为sentinel值外,不要接受任何负整数作为输入(实现输入验证)。输入所有数字后,程序应显示输入的最大和最小数字 问题:在执行循环时遇到问题。sentinel值用于退出循环,但它仍然保留最小值和最大值。有人能帮我吗?我是第一次使用Java并尝试学习Java 代码: import java.util.Scanner; 公共类UserEntryLoop { 公共静态void main(字符串[]
import java.util.Scanner;
公共类UserEntryLoop
{
公共静态void main(字符串[]args)
{
///声明///
int userEntry=0,max=Integer.MIN\u值,MIN=Integer.max\u值;
///显示所有这些都是int的快捷方式。
///Integer.Min_值是整数的最低可能值
扫描仪输入=新扫描仪(System.in);
//读取初始数据
系统输出(
“输入一个正的int值(如果输入为-99,则程序退出):”;
userEntry=input.nextInt();
//继续读取数据,直到输入为-99
while(userEntry!=-99){
//读取下一个数据
系统输出(
“输入一个正的int值(如果输入为-99,则程序退出):”;
userEntry=input.nextInt();
}
如果(userEntry>max)///如果max小于X,则打印初始化值。
max=userEntry;///要解决此问题,max应为整数。max\u值或MIN的MIN\u值
if(userEntry
您应该在循环中进行测试(我会分别使用Math.min
和Math.max
,而不是一系列if
s)。另外,不要忘记检查该值是否为负值。大概
while (userEntry != -99) {
// Read the next data
System.out.print("Enter a positive int value (the program exits "
+ "if the input is -99): ");
userEntry= input.nextInt();
if (userEntry >= 0) {
min = Math.min(min, userEntry);
max = Math.max(max, userEntry);
}
}
让我们用一个数组和一个循环来简化这个问题
int[] test = { 1, 2 };
int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;
for (int userEntry : test) {
min = Math.min(min, userEntry);
max = Math.max(max, userEntry);
}
System.out.println("The max is : " + max);
System.out.println("The min is : " + min);
我得到
The max is : 2
The min is : 1
您应该在循环中进行测试(我将分别使用
Math.min
和Math.max
,而不是一系列if
s)。另外,不要忘记检查该值是否为负值。大概
while (userEntry != -99) {
// Read the next data
System.out.print("Enter a positive int value (the program exits "
+ "if the input is -99): ");
userEntry= input.nextInt();
if (userEntry >= 0) {
min = Math.min(min, userEntry);
max = Math.max(max, userEntry);
}
}
让我们用一个数组和一个循环来简化这个问题
int[] test = { 1, 2 };
int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;
for (int userEntry : test) {
min = Math.min(min, userEntry);
max = Math.max(max, userEntry);
}
System.out.println("The max is : " + max);
System.out.println("The min is : " + min);
我得到
The max is : 2
The min is : 1
在循环内计算
min
和max
。正如@Marvin所指出的,如果max
和min
涉及循环内的if
条件,则需要获得。我现在将其放入循环内。马克斯工作。但它仍然计算的最小值为-99。我如何解决这个问题?在循环内计算min
和max
。正如@Marvin指出的,如果条件涉及循环内的max
和min
,则需要获得。我现在将其放入循环内。马克斯工作。但它仍然计算的最小值为-99。我怎么能解决这个问题?我试过了,但是最大值和最小值都是一样的。我测试了1和2。最小值和最大值都是2。它将最大值和最小值存储为相同的值。我尝试了这个,但最大值和最小值都是相同的。我测试了1和2。最小值和最大值都显示为2。它将最大值和最小值存储为相同的值。