JAVA寻找最低整数

JAVA寻找最低整数,java,if-statement,Java,If Statement,嗨,我需要帮助找到收入最低的人。 这里是codeCheck的链接 我写的代码在底部。我不明白为什么它的输出没有显示出来。先谢谢你 公司每季度报告净收入。有些季度亚马逊的每股净收入为正,有些季度为负。(由于亚马逊将任何利润再投资于该业务,所以利润总是很小。) 编写一个名为AmazonNetIncome的应用程序(一个有一个主方法的程序)来读取一组整数,每一个整数代表一个季度100股亚马逊股票的正、负或0净收入。当用户输入非整数时,输入将终止 使用此提示:System.out.print(“输入净

嗨,我需要帮助找到收入最低的人。 这里是codeCheck的链接

我写的代码在底部。我不明白为什么它的输出没有显示出来。先谢谢你

公司每季度报告净收入。有些季度亚马逊的每股净收入为正,有些季度为负。(由于亚马逊将任何利润再投资于该业务,所以利润总是很小。)

编写一个名为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");
      }
   }
}
import java.util.*;
公开课
{
公共静态void main(字符串[]args)
{
扫描仪输入=新扫描仪(系统输入);
系统输出打印(“输入净收入或Q退出:”;
双倍利润=0;
整数计数=0;
int count2=0;
int smalled=0;
双平均=0;
if(在.hasNextInt()中)
{
while(在.hasNextInt()中)
{ 
系统输出打印(“输入净收入或Q退出:”;
int num=in.nextInt();
利润=利润+数量;
count2++;
平均值=利润/计数2;
如果(数值>0)
{
计数++;
}
如果(num
问题在于,在第一次迭代中检查最小值时,初始化了一些导致错误的值

我添加了以下条件,将最小的数字设置为当前数字,但仅在第一次迭代期间

if (count2 == 1 || num < smalled ) {
    smalled = num;
}
if(count2==1 | | num
smalled
从零开始。只要
num
,您就可以将
smalled
设置为等于输入的编号
num
。但如果您的所有输入都是正的,
num
永远不小于
smalled
。因此
smalled
只是停留在零,并错误地指示最小输入为零

最简单的解决方案是:将
smalled
初始化为
Integer.MAX\u值
,最大可能的
int
值:

int smalled = Integer.MAX_VALUE;

这样,
num
几乎肯定会在某个时刻变为真,从而导致
smalled
被设置为输入值之一。如果
num
从来都不是真的,那只能是因为所有的输入都等于
Integer.MAX_VALUE
,因此最小的值实际上是
Integer.MAX_VALUE

对我来说很好,它要求你输入数据吗?您是否已在IDE调试器中逐步完成了代码?你是如何执行代码的?不,没有,问问。codecheck会自动为我输入它。我使用链接检查并执行我的代码。它在第一次检查时运行良好,因为它查找的是最低的数字-55。但是在第二关。所有数字都在0以上。所以这部分的输出为0。我明白了,非常感谢:)