这是我的作业:
编写一个程序来读取非负整数列表,并显示最大整数、最小整数和所有整数的平均值。用户通过输入不用于查找最大值、最小值和平均值的负前哨值来指示输入结束。平均值应为double
类型的值,因此将使用分数部分进行计算。
我得到了不同的部分来使用不同的方法:方法A使最大值和最小值正确,求和错误,方法B使求和和最大值正确,最小值错误。以下代码演示了方法B。一些变量被注释掉:
public class testthis2
{
public static void main(String[] args) {
System.out.println("Enter Numbers of Nonnegative Integers.");
System.out.println("When complete, enter -1 to end input values.");
Scanner keyboard = new Scanner(System.in);
//int max = keyboard.nextInt();
int max = 0;
int min = max; //The max and min so far are the first score.
//int next = keyboard.nextInt();
int count = 0;
int sum = 0;
boolean areMore = true;
boolean run_it = false; //run it if its true
//if (max <= -1) {
// System.out.println("Thanks for playing!");
// run_it = false;
//}
// else
// run_it = true;
while(areMore) //always true
{
int next = keyboard.nextInt();
//int max = 0;
// min = max;
if (next < 0) { //if -1 is entered end loop.
areMore = false;
run_it = false;
break;
}
else //run this badboy
if(next >= max)
max = next;
else if(next <= min)
min = next;
run_it = true;
sum += next;
count++;
}
if (run_it = true)
System.out.println("The highest score is " + max);
System.out.println("The lowest score is " + min);
System.out.println("count " + count);
System.out.println("sum " + sum);
System.out.println("average " + (double)(sum/count));
System.out.println("Thanks for playing!");
}
}
当我运行这个测试时,最大值、总和、计数和平均值都是正确的。但是,最小值是错误的,因为显然没有输入0。下面是一个示例测试运行:
When complete, enter -1 to end input values.
37
25
30
20
11
14
-1
The highest score is 37
The lowest score is 0
count 6
sum 137
average 22.0
Thanks for playing!
任何帮助都将不胜感激。谢谢!
看起来您将<code>min都初始化为0。
那么唯一会改变<code>min的代码是基于用户输入的。如果输入值(next
)为
问题是你尝试以同样的方式设置
min
。如果(下一个
。在您将未来的输入与它们的值进行比较之前,它们都应该从等于用户的< code>first输入开始。您需要在用户第一次输入时初始化< code>max
和< code>min
代码有 2 个问题:
最小的整数总是0,因为没有小于0的非负整数:)
if(next <= min) // for nonnegative integer this expression will return true only for 0
min = next;
所以尝试将“min”变量初始化为Integer.MAX_VALUE,相信会对你有所帮助。
最小堆由 2047 个元素组成,确定最大元素数所需的最大比较数为 _。 对于这个,我使用了方法,因为这是一个最小堆,最小元素将在根节点中。所以要找到最大值,我们必须一直到树的末尾,直到叶节点级别,并且必须与所有值进行比较。所以比较将是n-1,但ans不是2046,而是1043。有人能给我解释一下吗?
我想看看是否有一个有效的方法来比较计数(ACount,BCount,CCount,DCount,ECount),并评估JAVA中哪个计数最大? 该程序可以使用递归,但我想知道实现这一点的任何优化方法。
这个问题可能是封闭的,因为它听起来很模糊,但我真的问这个,因为我不知道或者我的数学背景不够。 我试图实现一个挑战,其中一部分挑战要求我计算矩阵的最小值和最大值。我对矩阵的实现及其操作没有任何问题,但是什么是矩阵的最小值和最大值?考虑到3x3矩阵是9个数中最小的数,最大的是最大的还是其他什么?
具有矩阵A的: 我想计算所有行中两个相邻数字之间的最大和最小差异。然后过滤以仅限制相邻数字min小于4和7之间的行,最大值在6和12之间的行。输出应该返回无行。 对于以下矩阵: 结果应该是第1行