【问题标题】:Name and age application with specific output using arrays and output使用数组和输出具有特定输出的名称和年龄应用程序
【发布时间】:2016-12-16 10:06:52
【问题描述】:

对于我的大学实验室工作,我们必须完成 4 项任务。我目前在 6 of 9 中,并且大部分都完成了它,但我在完成它的最后部分时遇到了困难。这是我们必须做的描述:

编写一个程序,定义两个数组——一个是字符串,一个是整数,大小都是 10。 然后,您的程序应要求用户输入代表人名的字符串,
和一个代表他们年龄的整数。它应该继续这样做,直到 用户
输入“完成”
而不是姓名,或者直到数组已满(即 10 对姓名和年龄
已输入)。然后它应该打印出姓名和年龄以及 最年轻和最年长。

提示:一个棘手的部分是确保一旦您输入“完成”以完成输入名称,
然后,您的程序不会询问您名为“完成”的人的年龄 - 请注意 关于这个。

我在上面用粗体字突出了我遇到的问题。以下是我目前拥有的代码,但我不确定如何正确完成粗体文本。

import java.util.Scanner;
import java.util.Arrays;
import java.util.Collections;

public class nameAge {


public static void main(String[] args){
 String[] name = new String[10];

     int[] age = new int[10];

    Scanner in = new Scanner(System.in);

    String NAME_REQUEST = ("Please enter name");
    String AGE_REQUEST = ("Please enter age");

    System.out.println("Please enter the name of a person and then their age. Do this for up to 10 people and once finished, type 'done'");
    name[0] = in.nextLine();
    System.out.println(AGE_REQUEST);
    age[0] = in.nextInt();
    System.out.println(NAME_REQUEST);
    name[1] = in.next();
    System.out.println(AGE_REQUEST);
    age[1] = in.nextInt();
    System.out.println(NAME_REQUEST);
    name[2] = in.next();
    System.out.println(AGE_REQUEST);
    age[2] = in.nextInt();
    System.out.println(NAME_REQUEST);
    name[3] = in.next();
    System.out.println(AGE_REQUEST);
    age[3] = in.nextInt();
    System.out.println(NAME_REQUEST);
    name[4] = in.next();
    System.out.println(AGE_REQUEST);
    age[4] = in.nextInt();
    System.out.println(NAME_REQUEST);
    name[5] = in.next();
    System.out.println(AGE_REQUEST);
    age[5] = in.nextInt();
    System.out.println(NAME_REQUEST);
    name[6] = in.next();
    System.out.println(AGE_REQUEST);
    age[6] = in.nextInt();
    System.out.println(NAME_REQUEST);
    name[7] = in.next();
    System.out.println(AGE_REQUEST);
    age[7] = in.nextInt();
    System.out.println(NAME_REQUEST);
    name[8] = in.next();
    System.out.println(AGE_REQUEST);
    age[8] = in.nextInt();
    System.out.println(NAME_REQUEST);
    name[9]= in.next();
    System.out.println(AGE_REQUEST);
    age[9] = in.nextInt();
    System.out.println(NAME_REQUEST);


    int size = name.length;
    int sizeN = age.length;

    for (int i=0; i < size; i++) {
        System.out.println("Name: " + name[i]);
        System.out.println("Age: " + age[i]);
    }
    int smallest = age[0];
    int largetst = age[0];
    for(int i=1; i< age.length; i++)
            {
                    if(age[i] > largetst)
                            largetst = age[i];
                    else if (age[i] < smallest)
                            smallest = age[i];

            }

            System.out.println("Largest Number is : " + largetst);
            System.out.println("Smallest Number is : " + smallest);
    }
}

【问题讨论】:

  • 在询问家庭作业问题时,请尝试说明为什么您在特定领域遇到问题,以便读者向您解释。如果您只是让某人为您编写代码,就像您所做的那样,您不太可能学到一些东西。也请不要紧急乞讨和最后期限的乞讨——这对志愿者来说从不紧急。

标签: java arrays loops


【解决方案1】:

您必须查看 java 中的循环文档 此代码可能对您有所帮助

public static void main(String[] args) {
    int youngest =0,older=0;
     String[] name = new String[10];
         int[] age = new int[10];
         String NAME_REQUEST = ("Please enter name");
         String AGE_REQUEST = ("Please enter age");

    for(int i=0 ; i< 10;i++){
       Scanner in = new Scanner(System.in);
       System.out.println(NAME_REQUEST); 
    String tmpName = in.nextLine();
    if(tmpName.equalsIgnoreCase("done"))
    break;
    name[i] = tmpName;
    System.out.println(AGE_REQUEST);
    age[i] = in.nextInt();
    if(age[i] > age[older])
    older = i;
    if(age[i] < age[youngest])
    youngest = i;

    }

     System.out.println("OLDER is  : " + name[older]);
     System.out.println("Younger : " + name[youngest]);
}

【讨论】:

    【解决方案2】:

    试试这个,我已经测试过了,它工作正常。希望有帮助。编码愉快。

    package com.pearson.nextgen.aggregatedsessionservice;
    
    import java.util.Scanner;
    
    public class NameAgeTest {
    
        public static void main(String[] args) {
            String[] name = new String[10];
            int[] age = new int[10];
            Scanner in = new Scanner(System.in);
    
            String NAME_REQUEST = "Please enter name";
            String AGE_REQUEST = "Please enter age";
    
            int count = 0;
            while (count < 10) {
                System.out.println(NAME_REQUEST);
    
                String nameInput = in.next();
                if (nameInput.equalsIgnoreCase("done")) {
                    break;
                }
                name[count] = nameInput;
                System.out.println(AGE_REQUEST);
                age[count] = in.nextInt();
    
                count++;
            }
    
            int[] minAndMaxIndex = findMinAndMaxIndex(age, count);
            System.out.println("Youngest Person: " + name[minAndMaxIndex[0]]);
            System.out.println("Oldest Person: " + name[minAndMaxIndex[1]]);
    
        }
    
        private static int[] findMinAndMaxIndex(int[] inputArray, int count) {
            int min, max = 0;
            int minIndex = 0, maxIndex = 0;
            max = min = inputArray[0];
    
            for (int i = 0; i < count; i++) {
                if (inputArray[i] > max)
                    maxIndex = i;
                else if (inputArray[i] < min)
                    minIndex = i;
    
            }
            return new int[] { minIndex, maxIndex };
        }
    
    }
    

    【讨论】:

    • 很遗憾我投了反对票,原因有二。首先,这里没有解释你改变了什么或为什么。其次,如果你帮助某人作弊,对他们有帮助吗?如果 OP 必须向讲师为自己的工作进行辩护而无法做到,会发生什么?
    猜你喜欢
    • 1970-01-01
    • 2022-01-12
    • 2017-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    相关资源
    最近更新 更多