java - 从 Scanner 读取多个输入
问题描述
(我是 Java 的初学者)我正在尝试编写一个程序,该程序使用扫描仪向用户询问 6 位数字,然后从这 6 个单独的数字中找到第二高的数字。到目前为止,这可行,但是我希望从单行而不是 6 个单独的行中读取输入。我听说过分隔符和标记化,但不知道如何实现它。我想让它读起来像“输入 6 位数字:1 2 3 4 5 6”并将每个数字解析为一个单独的变量,这样我就可以将它们放在一个数组中,如图所示。如果有人能给我一个关于这将如何工作的概要,那将不胜感激。为你的时间喝彩。
public static void main(String[] args)
{
//Ask user input
System.out.println("Enter 6 digits: ");
//New Scanner
Scanner input = new Scanner(System.in);
//Assign 6 variables for each digit
int num1 = input.nextInt();
int num2 = input.nextInt();
int num3 = input.nextInt();
int num4 = input.nextInt();
int num5 = input.nextInt();
int num6 = input.nextInt();
//unsorted array
int num[] = {num1, num2, num3, num4, num5, num6};
//Length
int n = num.length;
//Sort
Arrays.sort(num);
//After sorting
// Second highest number is at n-2 position
System.out.println("Second highest Number: "+num[n-2]);
}
}
解决方案
有几种方法可以做到这一点:
取一个单行字符串,然后解析它。
Scanner input = new Scanner(System.in);
....
String numString = input.nextLine();
String[] split = numString.split("\\s+");
int num[] = new int[split];
// assuming there will be always atleast 6 numbers.
for (int i = 0; i < split.length; i++) {
num[i] = Integer.parseInt(split[i]);
}
...
//Sort
Arrays.sort(num);
//After sorting
// Second highest number is at n-2 position
System.out.println("Second highest Number: "+num[n-2]);
推荐阅读
- android - Flutter Smart Refresher 加载完成后不隐藏
- javascript - 是否可以使用 next.js 将动态道具从一个页面传递到另一个页面?
- vue.js - Vue 通过 props 存储的值不是反应式的
- python - 我正在尝试使用 Google Drive API 获取文件的直接下载链接
- c++ - 调用复制函数时访问冲突
- regex - 如何使用正则表达式拦截带有路径变量的 URL?
- python - 如何在 Django 中解决 NoReverseMatch
- casting - 使用 INet 在 Omnet++ 上检查和投射错误
- node.js - 无法连接到 SQLExpress ussign node.js
- php - 初学者坚持使用 wordpress custimize