我正在尝试将能力从用户输入中获得最小值最大值,但似乎无法使其正常工作。我尝试了一个while循环,但不确定如何真正存储最小值和最大值。
public class examReview
{
public static void main (String[]args)
{
Scanner input = new Scanner(System.in);
int numOfInputs=0;
int currentMax
int currentMin=0;
double sum=0;
int intInput = 1;
int num;
while (intInput != 0)
{
intInput = input.nextInt();
currentMin = intInput;
currentMax = intInput;
System.out.println("currentminis" + currentMin);
System.out.println("currentmaxis" + currentMax);
sum += intInput;
numOfInputs++;
}
System.out.println(numOfInputs - 1); //Prints number of input
System.out.println(sum); //Prints sum of all values entered
System.out.println(sum/(numOfInputs-1)); //Prints average
System.out.println(currentMin);
}
}
答案 0 :(得分:0)
while (intInput != 0)
{
intInput = input.nextInt();
if(numOfInputs==0 || intInput<currentMin)currentMin = intInput;
if(numOfInputs==0 || intInput>currentMax)currentMax = intInput;
System.out.println("currentminis" + currentMin);
System.out.println("currentmaxis" + currentMax);
sum += intInput;
numOfInputs++;
}
答案 1 :(得分:0)
您目前每次围绕while循环更改currentMin
和currentMax
。
显然,这些需要在循环之外进行设置。
int currentMax=Integer.MIN_VALUE;
int currentMin=Interger.MAX_VALUE;
并在while循环中根据需要进行调整
while (intInput != 0)
{
intInput = input.nextInt();
if(intInput<currentMin) currentMin = intInput;
if(intInput>currentMax) currentMax = intInput;
System.out.println("currentminis" + currentMin);
System.out.println("currentmaxis" + currentMax);
sum += intInput;
numOfInputs++;
}
答案 2 :(得分:0)
Tom有正确的答案,您想要针对intInput测试当前的{Min,Max}:
if (intInput < currentMin ) {
currentMin = intInput;
}
您可以通过将currentMin和currentMax分配给异常值来简化标志日志,只要您获得至少一个输入,这已经导致问题,因为您的平均值将除以零,您应该没问题。
int currentMax = Integer.MIN_VALUE;
int currentMin = Integer.MAX_VALUE;
这样任何值都将大于currentMax并且小于currentMin,你可以摆脱旗帜。
另请注意,平均值应该是sum / numOfInputs
而不是sum / numOfInputs-1
。
答案 3 :(得分:0)
我认为你写的代码太多了。您应该使用java API:
List<Integer>
保留所有输入list.size()
自动跟踪数字数量Collections.min(list)
和Collections.max(list)
查找最低/最高试试这个:
public static void main (String[]args) {
Scanner input = new Scanner(System.in);
List<Integer> list = new ArrayList<Integer>();
int sum = 0;
for (int i = input.nextInt(); i > 0; i = input.nextInt()) {
sum += i;
list.add(i);
}
System.out.println(list.size()); //Prints number of input
System.out.println(sum); //Prints sum of all values entered
System.out.println(list.isEmpty() ? 0d ; sum/list.size()); //Prints average
System.out.println(Collections.min(list));//Prints min
System.out.println(Collections.max(list));//Prints max
}
答案 4 :(得分:0)
您需要将最大值设置为最小值,将最小值设置为最大值。然后在需要时进行比较和设置:
int currentMax = Integer.MIN_VALUE;
int currentMin = Integer.MAX_VALUE;
while(haveInput) {
if (intInput > currentMax) currentMax = intInput;
if (intInput < currentMin) currentMin = intInput;
// get more input
}