Java 如何使用do-while循环获得五个数字的和、平均值、最小值和最大值
我试图得到五个数字的和、平均值、最小值和最大值,但不知怎的,我得到了这个输出。我试图重新编码,但它仍然是一样的。你能帮我查一下这家伙。。。 这是我的密码:Java 如何使用do-while循环获得五个数字的和、平均值、最小值和最大值,java,do-while,Java,Do While,我试图得到五个数字的和、平均值、最小值和最大值,但不知怎的,我得到了这个输出。我试图重新编码,但它仍然是一样的。你能帮我查一下这家伙。。。 这是我的密码: import java.util.*; public class Kleine { public static void main(String[] args) { Scanner scan = new Scanner(System.in); double average; int c
import java.util.*;
public class Kleine {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
double average;
int count = 0, sum = 0, num, min = 0, max = 0;
System.out.println("Please enter the number of numbers you wish to evaluate:");
do {
num = scan.nextInt();
sum += num;
count++;
} while (count < 5);
average = sum / 5;
{
if (num > max) {
max = num;
}
if (num < min) {
min = num;
}
}
System.out.println("Your average is: " + average);
System.out.println("The sum is: " + sum);
System.out.println("Your maximum number is: " + max);
System.out.println("Your minimum number is: " + min);
}
}
最小值和最大值都在某个地方。。。
请给我一点建议…最小值和最大值现在等于整数的最大值和最小值。现在,如果任何数字小于最小值且大于最大值,则最小值和最大值将占据其位置。平均值和总和功能非常好。代码中的问题是,它在执行输入循环后获得最大值和最小值。流量是错误的
import java.util.*;
public class Kleine {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
double average;
int count=0, sum=0, num=0;
int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;
System.out.println("Please enter the number of numbers you wish to evaluate:");
do{
if(num>max) max=num;
if(num<min) min=num;
num=scan.nextInt();
sum+=num;
count++;
}while(count<5);
average = sum/5;
System.out.println("Your average is"+average);
System.out.println("The sum is:"+sum);
System.out.printf("Your maximum number is %d\n",max);
System.out.printf("Your minimum number is %d\n",min);
}
}
import java.util.*;
公共级Kleine{
公共静态void main(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
双倍平均;
int count=0,sum=0,num=0;
int max=整数的最小值;
int min=整数最大值;
System.out.println(“请输入您希望评估的数字:”);
做{
如果(num>max)max=num;
如果(num处理最小/最大值的最佳方法是在读取每个值时跟踪它们:
int sum = 0;
int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;
for (int i=0; i < 5; ++i) {
num = scan.nextInt();
if (num > max) max = num;
if (num < min) min = num;
sum += num;
}
double average = sum / 5.0d;
int和=0;
int max=整数的最小值;
int min=整数最大值;
对于(int i=0;i<5;++i){
num=scan.nextInt();
如果(num>max)max=num;
如果(num
我用最小/最大的整数值分别为max和min值设定种子。这让我们能够在读取时捕获实际的min和max值。此外,我认为基本for
循环比do
while循环更有效
请注意,我使用双精度类型计算平均值,因为它可能不是纯整数值(即使在示例数据中,平均值也不是整数)。使用
int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;
还有你的
{
if(num>max)
max=num;
if(num<min)
min=num;
}
{
如果(数值>最大值)
max=num;
如果(num作为开始,您可以使用Math.min
和Math.max
。平均值为sum/count
在没有循环的情况下获取最小值的示例如下:
long min = Integer.MAX_VALUE;
min = Math.min(min, 9);
min = Math.min(min, 4);
min = Math.min(min, 6);
// min = 4
为max做类似的事情
您最好从一个数字列表或数组开始。正确输出,然后添加更复杂的内容,如用户输入。您可以这样做,而无需定义要读取的整数数:
import java.util.ArrayList;
import java.util.IntSummaryStatistics;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
List<Integer> numbers = new ArrayList<>();
Scanner in = new Scanner(System.in);
while (true) {
System.out.println("Next number?");
numbers.add(in.nextInt());
IntSummaryStatistics summaryStatistics = numbers.stream()
.mapToInt(Integer::valueOf)
.summaryStatistics();
System.out.println(String.format("Max: %d, Min: %d, Average: %s, Sum: %d", summaryStatistics.getMax(), summaryStatistics.getMin(), summaryStatistics.getAverage(), summaryStatistics.getSum()));
}
}
}
import java.util.ArrayList;
导入java.util.IntSummaryStatistics;
导入java.util.List;
导入java.util.Scanner;
公共班机{
公共静态void main(字符串[]args){
列表编号=新的ArrayList();
扫描仪输入=新扫描仪(系统输入);
while(true){
System.out.println(“下一个号码?”);
add(in.nextInt());
IntSummaryStatistics summaryStatistics=numbers.stream()
.mapToInt(整数::valueOf)
.summaryStatistics();
System.out.println(String.format(“最大值:%d,最小值:%d,平均值:%s,总和:%d”),summaryStatistics.getMax(),summaryStatistics.getMin(),summaryStatistics.getAverage(),summaryStatistics.getSum());
}
}
}
如果我只是更改现有代码,逻辑应该如下所示:
do{
num=scan.nextInt();
sum+=num;
if(count==0){
min=num;
max=num;}
if(num>max)
max=num;
if(num<min)
min=num;
count++;
}while(count<5);
average = sum/5;
do{
num=scan.nextInt();
sum+=num;
如果(计数=0){
min=num;
max=num;}
如果(数值>最大值)
max=num;
如果(num总和必须是19,但当我运行此代码时,它会变成18。它为什么会递减?@ArsusKleineBuenafe我编辑了代码,最新代码是否给了你一个不正确的总和?@ArsusKleineBuenafe你的示例的总和是19,我更新的代码也给了19。它对我来说运行正确。代码正在运行,但平均值没有给出正确的值。)回答正确。不过谢谢你,我只是在平均值上加了.0d=sum/5。所以这段代码(平均值=sum/5.0d)给我正确的答案。如果我输入所有正值,这将无法正常工作。最小值将为0。如果我输入所有-ve值,最大值也将为0。它适用于任何情况,我的朋友,我建议你运行代码。我认为我不需要运行代码。很明显,在原始代码中,最小值和最大值在循环外由0初始化。Maybe,您应该运行代码并检查..:)您需要使用int max=Integer.MIN_值;int MIN=Integer.max_值;谢谢,这很有效,但不知怎的,您能找到修复总和的方法吗?输出的总和总是减少一(1)。我试图找到错误,但不知何故,我被搞糊涂了。@ArsusKleineBuenafe我看不出总和有问题,即使在您的原始代码中,它的计算是正确的。也许您(预期的)数学是错的。
do{
num=scan.nextInt();
sum+=num;
if(count==0){
min=num;
max=num;}
if(num>max)
max=num;
if(num<min)
min=num;
count++;
}while(count<5);
average = sum/5;