Java中最年轻,最古老的n数组

时间:2017-09-04 13:07:57

标签: java arrays

我写了一个程序,根据我输入的年龄和名字找到最年长和最年轻的人。问题是,程序只给我最老的人,否则最小的语句就不会执行。

public class Boo {

public static void main(String[] strings) {

  int[] age = new int[10];
  String[] name = new String[10];
  int count = 0;

  Scanner in = new Scanner(System.in);

  boolean notDone = true;

  int smallest = age[0];
  int largest = age[0];

  String smalName = "";
  String larName = "";


do {


  System.out.println("Enter name");
  name[count] = in.next();



  if (!name[count].equalsIgnoreCase("done")) {
    System.out.println("Enter age");
    age[count] = in.nextInt();

    if (age[count] > largest) {
      largest = age[count];
      larName = name[count];
    }
    else if (age[count] < smallest) {
      smallest = age[count];
      smalName = name[count];
    }

  }
  else if (name[count].equalsIgnoreCase("done")) {
    notDone = false;
  }

  count++;

}while(notDone && count < 3);

3 个答案:

答案 0 :(得分:1)

您的smallest变量正被实例化为0,因为您将其设置为age[0],这是一个整数数组,已经初始化为默认值0。

在您首次将年龄作为输入后,尝试将其设置为age[0],然后进行比较。

int smallest = age[0];
int largest = age[0];
do
{
  System.out.println("Enter name");
  name[count] = in.next();
  if (!name[count].equalsIgnoreCase("done"))
  {
    System.out.println("Enter age");
    age[count] = in.nextInt();

    if (count == 0)
    {
      smallest = age[0];
      largest = age[0];
      larName = name[0];
      smalName = name[0];
    }
    else
    {
      if (age[count] > largest)
      {
        largest = age[count];
        larName = name[count];
      }
      if (age[count] < smallest)
      {
        smallest = age[count];
        smalName = name[count];
      }
    }
  }
  else if (name[count].equalsIgnoreCase("done"))
  {
    notDone = false;
  }

  count++;

} while (notDone && count < 3);

答案 1 :(得分:0)

我会说这是将它分成两种方法的最佳做法 - 一种是最年轻的,另一种是最年长的。对于可能会查看您的代码的其他开发人员来说,这一点很清楚。 如果这不是一个选项,您可以使用Pair来返回两个值。它意味着键和值,但它使您能够返回2个值。

答案 2 :(得分:0)

你的算法有一些怪癖,也许你不知道。您的阵列年龄已默认初始化。如果你知道自己在做什么,那不一定是坏事,但在这种情况下,你似乎并没有。您正在使用列表中没有的值初始化最小值和最大值。

我的建议是将值的记录与值的计算分开。

编辑:我的意思是这个词。

GET index_1/doc_type/_search
{
  "query" : 
    {"match": {"name": "A B C"}}
}