如何在不使用任何数组的情况下找到浮点数列表中的最小数字?

时间:2016-09-19 21:10:31

标签: java

我想在不使用任何数组的情况下从用户输入的文件中找到浮点数列表中的最小数字,但我似乎无法弄清楚如何做到这一点。这是我目前所拥有的,但根本不起作用。任何帮助将不胜感激,请随时编辑语法。

ChildViewController

4 个答案:

答案 0 :(得分:1)

跟踪最低数字。如果下一个数字较低,那么它是新的最低数字。除了一个浮点变量之外,你不需要任何存储空间。

答案 1 :(得分:0)

你可以写:

 float min;
if (myScanner.hasNextFloat()){
  min=myScanner.nextFloat();;
}
while(myScanner.hasNextFloat())
{
  counter = myScanner.nextFloat();

  if (counter<min) {min = counter};

  if (counter == 47.83) {
    System.out.println("The top qualifier is: " + counter);
  } else {
    counter++;
  }
  //System.out.println(myString);

}

答案 2 :(得分:0)

您需要在Float.MAX_VALUE中初始化计数器,并在每次数字小于当前计数器时替换它。

float newNumber = myScanner.nextFloat();
if(newNumber < counter) {
    counter = newNumber;
}

最后,最小的数字是 - &gt;计数器。

答案 3 :(得分:0)

技巧是在扫描文件时跟踪最低数字(使用List或其他数据结构作为评论者建议可能只隐藏数组 - 取决于实现)。您的代码应该使用您已注释掉的while循环。如果你的最小值从正无穷大开始,你不需要为第一个浮点数单独一步。你的代码的核心就是这样(尽管我承认我对counter假设要做的事情做了一些假设并消除了神秘的47.83):

float min = Float.POSITIVE_INFINITY;
float temp;
int counter = 0;

try {
   Scanner myScanner = new Scanner(myFile);
   myScanner.nextLine(); //Are you sure you want to skip the first line?

   while(myScanner.hasNextFloat()) {
      temp = myScanner.nextFloat(); //get next float
      if(temp<min) min=temp;        //keep smallest float so far
      counter++;                    //count floats checked
   }

   myScanner.close();
   sc.close();
} catch (Exception e) {
   System.out.println("File not found.");
}

最后,counter是您已检查的浮点数,min是最小的浮点数。如果你没有花车,min将是正无穷大。