【问题标题】:Java beginner: How to get the the number of values from a user input string in java?Java初学者:如何从Java中的用户输入字符串中获取值的数量?
【发布时间】:2016-03-04 13:19:27
【问题描述】:

用户可以输入尽可能多的数字,程序应该对它们进行排序。所以我想在开始排序之前找到输入中的数字元素。示例“输入一些数字”输入:76 24 56 9 312 1 3013,我想要输出:1 9 24 56 76 312 3013(升序)。注意我没有要求用户输入他要先输入多少,这正是我想知道如何找到的。

这是用户自己输入数组大小的工作代码

import java.util.Scanner;

public class ArraySorting {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println("Enter size of the array");
        int z = in.nextInt();
        int a[] = new int[z];
        System.out.println("Enter numbers");
        for (int i = 0; i < z; i++) {
            a[i] = in.nextInt();
        }
        for (int j = 0; j < z - 1; j++) {
            for (int p = 0; p < (z - 1) - j; p++) {
                if (a[p] > a[p + 1]) {
                    int n = a[p];
                    a[p] = a[p + 1];
                    a[p + 1] = n;
                }//if loop
            }//for loop 2
        }//for loop 1
        System.out.println("Numbers in Ascending order:");
        for (int k = 0; k < z; k++) {
            System.out.print(a[k] + " ");
        }
    }
}

【问题讨论】:

  • 使用String[] numbers =String.split(" ");这会将您的字符串拆分为空格处的字符串数组(它们将被删除)
  • 请“美化”你的代码。这很难阅读;)
  • 您可以读取用户输入到列表中的任何内容并检查其大小。
  • " 注意我没有要求用户输入他要先输入多少,这正是我想知道如何找到的" ...您的代码实际上确实采用了第一个输入作为长度。

标签: java arrays sorting bubble-sort


【解决方案1】:

在每个数字后按回车键。

对于未来,请使用有意义的变量名,这对其他开发人员阅读您的代码有很大帮助:)

public static void main(String[] args) {
    List<Integer> numbers = new ArrayList<>();
    Scanner scanner = new Scanner(System.in);
    String input;
    boolean finished = false;

    System.out.println("Enter numbers.\nType End to finish");
    do {
        input = scanner.next();
        if (input.toLowerCase().equals("end")) {
            finished = true;
            Collections.sort(numbers);
            System.out.println(numbers);
            System.out.println("You have entered " + numbers.size() + " numbers");
        } else {
            try {
                numbers.add(Integer.parseInt(input));
            }catch(Exception e){
                System.out.println("This is not a number please try again !");
            }
        }
    } while (!finished);

}

【讨论】:

    【解决方案2】:

    您可以将输入作为逗号分隔的数字。使用逗号分割它,排序并打印输出。

    使用列表代替数组。用户将继续输入一个数字。如果用户输入“结束”或“完成”或其他内容,则您对列表进行排序并打印输出。

    【讨论】:

      猜你喜欢
      • 2016-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-15
      相关资源
      最近更新 更多