更改程序提示用户输入的方式

时间:2015-09-18 02:30:32

标签: java list sorting

此程序提示用户输入列表中的数字,然后提示用户输入列表中的实际数字。然后它决定列表中的数字是否已经排序。它完全正常,但我希望程序提示用户输入列表中的数字和列表,而不是提示用户输入数字,然后提示用户的次数与用户的次数相同以前输入。对不起,这是一个很长的时间,这是输出与我正在寻找的一个例子:

当前输出:

Enter a number for the length of the list: 5

Enter list: 
1

Enter list: 
3

Enter list: 
2

Enter list: 
4

Enter list: 
5

The list is not sorted.

我想要的是:

Enter a number for the length of the list: 5 1 3 2 4 5

The list is not sorted.

代码:

import java.util.Scanner;

public class Question7_19 {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        System.out.print("Enter a number for the length of the list: ");
        int listLength = input.nextInt();
        int[] number = new int[listLength];

        for (int i = 0; i < number.length; i++) {
            System.out.println("Enter list: ");
            number[i] = input.nextInt();
        }

        if (isSorted(number)) {
            System.out.println("The list is sorted.");
        } else {
            System.out.println("The list is not sorted.");
        }
    }

    public static boolean isSorted(int[] list) {
        for (int i = 0; i < list.length - 1; i++) {
            if (list[i] > list[i + 1]) {
                return false;
            }
        }
        return true;
    }
}

1 个答案:

答案 0 :(得分:0)

您可以使用StringTokenizer来标记输入。这将允许在一行上输入数组编号。这也可以根据用户提供的令牌数量确定阵列的大小。

public static void main(String[] args)
{
    Scanner scanner = new Scanner(System.in);

    System.out.print("Enter a numbers: ");
    String input = scanner.nextLine();

    StringTokenizer s = new StringTokenizer(input);

    int[] number = new int[s.countTokens()];

    int index = 0;
    while(s.hasMoreTokens()){
        String item = s.nextToken();
        try{
            number[index] = Integer.parseInt(item);
            index++;
        }catch(Exception e){
            e.printStackTrace();
        }
    }

    if (isSorted(number)) {
        System.out.println("The list is sorted.");
    } else {
        System.out.println("The list is not sorted.");
    }

    scanner.close();
}

public static boolean isSorted(int[] list) {
    for (int i = 0; i < list.length - 1; i++) {
        if (list[i] > list[i + 1]) {
            return false;
        }
    }
    return true;
}

编辑:您还可以拆分字符串并循环返回返回的数组元素。

String[] splitInput = input.split(" ");

int[] number = new int[splitInput.length];

for(int i = 0 ; i < splitInput.length ; i++){
    String item = splitInput[i];
    try{
        number[i] = Integer.parseInt(item);
    }catch(Exception e){
        e.printStackTrace();
        i--;
    }
}