您好,我需要帮助找到最低的收入。 这是codeCheck的链接
http://www.codecheck.it/files/18030103413ucpa6f7ev1gbmexv0tlv2av3
我写的代码在底部。我不知道为什么它的输出不显示。先感谢您。
公司每季度报告净收入。亚马逊的某些季度每股净收益为正数,而某些季度为负数。 (因为亚马逊将任何利润再投资到该业务中,所以它总是很小。)
编写一个名为AmazonNetIncome的应用程序(具有主要方法的程序)以读取整数集合,每个整数代表100股亚马逊股票在该季度的正,负或0净收入。当用户输入非整数时,输入将终止。
使用此提示:System.out.print(“输入净收入或退出的Q:”);
注意:实际上,您将退出所有无法转换为int的字符串。
执行以下操作:
find and print the number of profitable years (net income greater than 0.)
find and print the lowest net income
find and print the average net income
仅当输入至少1个整数时才打印数字。否则,打印“未输入任何值”
您将一次读取一次输入,并在进行过程中进行所有处理。没有数组
输出应在单独的行中并按此顺序
number of profitable years
lowest net income
average net income
请勿将最小值初始化为0或某个负数。声明时可以将其临时设置为0,然后初始化为第一个输入。您可以使用布尔变量作为标记,如视频中所述。
import java.util.*;
public class AmazonNetIncome
{
public static void main(String[]args)
{
Scanner in = new Scanner (System.in);
System.out.print("Enter net income or Q to quit: ");
double profit= 0;
int count = 0;
int count2 = 0;
int smalled =0;
double average = 0;
if(in.hasNextInt())
{
while(in.hasNextInt())
{
System.out.print("Enter net income or Q to quit: ");
int num = in.nextInt();
profit= profit + num;
count2++;
average = profit/count2;
if(num > 0)
{
count++;
}
if (num < smalled )
{
smalled = num;
}
}
System.out.println(count);
System.out.println(smalled);
System.out.println(average);
}
else
{
System.out.println("No values entered");
}
}
}
答案 0 :(得分:1)
问题是您初始化了一些值,这些值会在您检查最小数字时的第一次迭代期间导致错误。
我添加了以下条件,它将最小的数字设置为当前数字,但仅在第一次迭代期间。
if (count2 == 1 || num < smalled ) {
smalled = num;
}
答案 1 :(得分:1)
smalled
从零开始。每当smalled
时,您就将num
设置为等于输入数字num < smalled
。但是,如果您所有输入都是肯定的,则num
永远不会小于 smalled
。因此,smalled
保持为零,并错误地指示最小输入为零。
最简单的解决方案:将smalled
初始化为Integer.MAX_VALUE
,这是可能的最大int
值:
int smalled = Integer.MAX_VALUE;
这样,num < smalled
几乎肯定会在某个时候变为true,从而使smalled
设置为输入值之一。而且,如果num < smalled
从未为真,那只能是因为所有输入都等于Integer.MAX_VALUE
,因此最小值实际上是Integer.MAX_VALUE
。