java从扫描仪读取多个输入
(我是Java的初学者) 我正试图编写一个程序,使用扫描仪向用户索要6位数字,然后从这6位数字中找出第二高的数字。到目前为止,这是可行的,但是我希望从一行读取输入,而不是从6行单独读取。我听说过分隔符和标记化,但不知道如何实现它。我想让它读作“输入6位数字:123456”,并将每个数字解析为一个单独的变量,这样我就可以将它们放入一个数组中,如图所示。如果有人能给我一个如何工作,这将是非常感谢我的运行情况。为你的时间干杯
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]);
}
}
# 1 楼答案
当然,有很多方法可以做到这一点。我给你两种方法: 1.使用lambda函数-这种方法更先进,但非常实用:
最后将流收集为整数[]
您可以根据需要多次使用迭代器和循环,并从控制台读取
int num[] = new int[6]; for (int i = 0; i < 6; i++) { num[i] = input.nextInt(); }
# 2 楼答案
有几种方法可以做到这一点:
取一行字符串,然后解析它
# 3 楼答案
你的解决方案已经准备好了
如果你浏览scaner的文档,你会发现你的代码使用不同的输入,只要它们是由空格和/或行分隔符分隔的整数
但你可以优化你的代码,让它看起来更好:
作为一个额外的提示,我想提到的是,这段代码仍然会产生大量开销,您可以通过使用:
如果您不喜欢在有多个“最高点”的情况下指向“最高点”,则可以在以下情况下替换“其他点”: