Java 哨兵值实现

Java 哨兵值实现,java,Java,问题: 编写一个带有循环的程序,允许用户输入一系列非负整数。用户应输入-99以表示系列结束。除了-99作为sentinel值外,不要接受任何负整数作为输入(实现输入验证)。输入所有数字后,程序应显示输入的最大和最小数字 问题:在执行循环时遇到问题。sentinel值用于退出循环,但它仍然保留最小值和最大值。有人能帮我吗?我是第一次使用Java并尝试学习Java 代码: import java.util.Scanner; 公共类UserEntryLoop { 公共静态void main(字符串[]

问题: 编写一个带有循环的程序,允许用户输入一系列非负整数。用户应输入-99以表示系列结束。除了-99作为sentinel值外,不要接受任何负整数作为输入(实现输入验证)。输入所有数字后,程序应显示输入的最大和最小数字

问题:在执行循环时遇到问题。sentinel值用于退出循环,但它仍然保留最小值和最大值。有人能帮我吗?我是第一次使用Java并尝试学习Java

代码:

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。它将最大值和最小值存储为相同的值。