繁体   English   中英

数组中的最小值继续打印0? Java(但.txt文件中的数字不能为零)

[英]min value in array keeps printing 0? Java (but no zero in the .txt file as a number)

我的下面的代码工作正常,除了最小值。 我无法弄清楚为什么最小值始终保持打印为零? 它从其中提取的.txt文件中的数字为:2 6 9 35 2 1 8 8 4.好像它没有识别出numbers [0] =2。但是max可以正常工作,并且相同的代码也被颠倒了吗? 任何帮助表示赞赏。

import java.io.*;

import java.util.*;

class Thirteen{
   public static void main(String [] args) throws IOException{

      int count = 0;

      Scanner keys = new Scanner(System.in);
      Scanner keystwo;

      System.out.println("Please enter an input file name");
      String filename = keys.next();
      File infile = new File(filename);
      keystwo = new Scanner(infile);

      System.out.println("Please enter an output filename");
      String outputfile = keys.next();
      File outfile = new File(outputfile);

      FileOutputStream outstream = new FileOutputStream(outfile);
      PrintWriter display = new PrintWriter(outstream);


      while(keystwo.hasNext()){

         count++;
         int numbers [] = new int [count];
         int max = numbers[0];
         int min = numbers[0];
         int average = 0 ;
         int sum = 0;
         int counttwo = 0;

         while(keystwo.hasNext()){ 
            counttwo++;
            //add numbers to array
            for(int A = 0; A < numbers.length; A++){
               numbers[A] = keystwo.nextInt();
               sum = sum+ numbers[A]; 
               }
            // output numbers into txt file
            for(int item : numbers){
               display.println(item); 
               }
            for(int C: numbers){          
               if(C < min){
                  min = C;
                  }
               }   
            for(int B : numbers){
               if(B > max){
                  max = B;
                    }
                 }

            average = sum / counttwo;
      }//end while

      System.out.println("The total numbers in the array: " + counttwo ); 
      System.out.println("The maximum value is: " + max); 
      System.out.println("The minimum value is: " + min);
      System.out.println("The average value is: " + average);
      display.println("The total numbers in the array: " + counttwo ); 
      display.println("The maximum value is: " + max); 
      display.println("The minimum value is: " + min);
      display.println("The average value is: " + average);
      }//end first while

   keystwo.close();

   display.close();

   }
}//end

这是因为min的起始值将为0。而是将其设置为Integer.MAX_VALUE,您将获得适当的min。

您正在将最小值设置为0:

min = numbers[0]; //numbers[0] is 0, since you haven't initialized it

您需要将最小值定义为:

min = Integer.MAX_VALUE; //the largest possible value that int can have, so every other int is bigger

此外,建议对您的最高费用做同样的事情。 在这种情况下,它并不重要,但是如果您恰好在.txt文件中包含负值,那么max也将不起作用。 为了确保最小值和最大值都正确,请按照上述说明初始化最小值,并将最大值初始化为

max = Integer.MIN_VALUE;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM