头歌Java本关任务:从键盘输入N个整数,按升序排序,输出排序后的数据(用空格分隔) 。
时间: 2025-06-22 22:48:40 浏览: 13
### Java 实现从控制台读取多个整数并升序排序
为了实现这一功能,可以创建一个程序来接收用户的输入,解析这些输入为整数值,并对其进行排序。下面是一个完整的解决方案:
#### 定义辅助方法用于获取用户输入
首先定义一个名为 `getInput` 的静态方法,该方法负责处理来自标准输入的数据流。
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class Main {
private static List<Integer> getInput() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入若干个整数(以空格分隔):");
String[] inputStrings = scanner.nextLine().split("\\s+");
ArrayList<Integer> numbers = new ArrayList<>();
try {
for (String str : inputStrings) {
int num = Integer.parseInt(str.trim());
numbers.add(num);
}
} catch (NumberFormatException e) {
System.err.println("输入包含非整数字符,请重试!");
return null; // 或者可以选择调用此方法再次尝试
}
if (numbers.isEmpty()) {
System.err.println("未接收到任何有效数据");
return null;
}
return numbers;
}
}
```
#### 对列表中的元素进行排序
接着,在主类中编写逻辑以确保获得的有效整数被正确排序。这里使用了 `Collections.sort()` 方法来进行自然顺序上的升序排列[^1]。
```java
private static void sortAndPrint(List<Integer> list) {
Collections.sort(list); // 升序排序
StringBuilder sb = new StringBuilder();
for (Integer number : list) {
sb.append(number).append(" ");
}
System.out.println(sb.toString().trim()); // 去除最后多余的空格
}
```
#### 主函数入口
最后一步是在 `main` 函数里组合上述两部分的功能,形成完整的工作流程。
```java
public static void main(String[] args) {
while(true){
List<Integer> integers = getInput();
if(integers != null){
sortAndPrint(integers);
break;
}
}
}
```
这段代码实现了从命令行接受一系列由空白符分割的整数作为输入,经过验证后将其转换成整型数组,之后按照从小到大的顺序打印出来。如果遇到非法输入,则会提示错误信息给用户,并允许其重新输入直到成功为止。
阅读全文
相关推荐










