当我只想要最大的数字时,为什么所有数字都打印出来?

时间:2017-06-04 14:15:23

标签: java

我想只显示文本文件中最大的数字(价格)。每次它向我显示整数而不是最高值。我一直在使用很多方法,比如for循环和其他方法。但我认为问题在于其他问题。

 package practice;
 import java.util.Scanner;
 import java.io.*;
 public class Practice {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws IOException { 
      String fileName = "C:\\Users\\Work\\Desktop\\Prices.txt";
      File inFile = new File(fileName);
      Scanner inPut = new Scanner(inFile);
      String line = inPut.nextLine();
      while(inPut.hasNext()){


        String[] Company = new String[3];
        int[] Price = new int[3];
        int[] Quality = new int[3];

        int count = 0;
        count++;

        Company[count] = inPut.next();
        Price[count] = inPut.nextInt();
        Quality[count] = inPut.nextInt();


        int HighestPrice = Price[0];

        int counter = 1;
        while(counter<Price.length-1){
          if(Price[counter]>HighestPrice){
              HighestPrice = Price[counter];
              int hi = counter;
            }
            counter++;
          }
          System.out.println(HighestPrice);
        }
      }
    }

2 个答案:

答案 0 :(得分:0)

在数组中输入后关闭循环体 您应该在循环外创建数组,因为每次重新创建它们时它们的引用都会丢失。

String line = inPut.nextLine();
String[] Company = new String[3];
int[] Price = new int[3];
int[] Quality = new int[3];
int count = 0;
while(inPut.hasNext()){
  Company[count] = inPut.next();
  Price[count] = inPut.nextInt();
  Quality[count] = inPut.nextInt();
  count++;
}

答案 1 :(得分:0)

您可以使用代码查找while(inPut.hasNext()){块内的最大数字。因为while(counter<Price.length-1){循环在每一行都被执行,因此只有一个值要处理,当然每次都是最大值。

跳过第二个循环并仅执行内部代码,将System.out.println(HighestPrice);放在外部循环之外它应该可以工作。