【问题标题】:How do I get a specific component of an array that doesn't have set length?如何获取没有设置长度的数组的特定组件?
【发布时间】:2018-07-30 19:52:05
【问题描述】:

我要做的是从用户那里获取一组数字,控制台将打印出英语第二高的数字和西班牙语第二低的数字。

首先,我试图从用户那里获取输入,将其放入一个数组中并获取组件的第二高和第二低的值。但我不知道如何获取我需要的。

public static void main(String[] args) {

    //get the length from user
    int length;
    Scanner input = new Scanner(System.in);

    System.out.println("How many variables are you going to enter?: ");

    length = input.nextInt();

    //allocate array for that length

    int[] variables = new int[length];

    for(int counter = 0; counter < length; counter++) {
        System.out.println("Enter variable: ");
        variables[counter] = input.nextInt();


    }

    input.close();

    //print the variables
    System.out.println("Your variables are");
    for(int counter = 0; counter < length; counter++) {
        System.out.println(variables[counter]);
    }


}

【问题讨论】:

  • 旁注:您现在正在关闭 System.in。
  • 您需要对数组进行排序,然后从中获取 sortedArray[1] 和 sortedArray[length-1] 元素。
  • @MindaugasNakrošis 排序后的操作比事先进行排序更昂贵。他应该在获取数字时确定最小值/最大值或对其进行排序。

标签: java arrays eclipse input keyboard


【解决方案1】:
    System.out.println("------------------");
    Arrays.sort(variables);    //sort array
    System.out.println(variables[1]);   //2nd lowest value
    System.out.println(variables[variables.length-2]);  //2nd highest value 

试试这个兄弟

将此添加到您的代码中

【讨论】:

    【解决方案2】:
    class Demo
    {
        public static void findNum(int arr[]){
            int largest = arr[0], second_largest = arr[0];
            int minimum = are[0], second_minimum = are[0];
            for(int i=0;i<arr.length;i++){
                if(arr[i] >= largest){
                    second_largest = largest;
                    largest = arr[i];
                }
                else if(arr[i]>second_largest){
                    second_largest = arr[i];
                }
                if(arr[i] <= minimum){
                    second_minimum = minimum;
                    minimum = arr[i];
                }
                else if(arr[i]<second_minimum){
                    second_minimum = arr[i];
                }
    
            }
            System.out.println("Second Largest = " + second_largest + " Second_minimum = "+second_minimum);
        }
        public static void main (String[] args) throws java.lang.Exception
        {
            int arr[] = {5,3,2,1,8,77};
            findNum(arr);
        }
    }
    

    如果您特别不想对原始数组进行排序,您可以这样做。

    【讨论】:

    • 从技术上讲,当数组中只有 1 或 2 个项目时,没有什么可以是第二大或第二小的。或者如果所有项目都相同? OP并没有真正指定结果应该是什么。我还认为至少应该提到事先确定这一点,而不是在获得所有数字之后。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-14
    • 2020-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多