gpt4 book ai didi

java - 使用扫描器 hasNext() 循环 while

转载 作者:行者123 更新时间:2023-12-01 09:18:16 26 4
gpt4 key购买 nike

当我尝试运行我的工作时遇到问题。我必须通过控制台输入一些数字,它应该按升序排列它们并保存到数组中。我认为 hasNext 方法与 String.nextLine() 配合得很好,但它似乎仍在循环中。感谢您的帮助

import java.util.Scanner;

public class OrdinamentoMaggiore{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("Digita dei numeri e te li mettero' in ordine crescente: ");
String Numeri = sc.nextLine();
int dimArray = 0;
while (sc.hasNext(Numeri)){
dimArray++;
System.out.println("Dimensione array: " + dimArray);
}
int min = 0, max = 0, temp;
int[] mioArray = new int[dimArray];
for (int i = 0; i <= mioArray.length; i++){
mioArray[i] = Integer.parseInt(sc.next(Numeri));
}
for (int j = 0; j <= mioArray.length; j++){
for (int h = 1; h <= mioArray.length; h++){
if (mioArray[j] < mioArray[h]){
continue;
}
else {
temp = mioArray[j];
mioArray[j] = mioArray[h];
mioArray[h] = temp;
}
}
}
System.out.println("Min: " + mioArray[0]);
System.out.println("Max: " + mioArray[dimArray]);
sc.close();
}
}

最佳答案

问题在于您正在将第一行输入读取到变量 Numeri 中。然后,您在 Numeri 上调用 hasNext ,但它并没有按照您想象的方式工作。 Scanner.hasNext 已定义 here如:

Returns true if the next token matches the pattern constructed from the specified string.

因此它使用 Numeri 中的字符串作为需要匹配的模式。绝对不是你想要的。

我会推荐一个列表并做这样的事情:

    List<Integer> numberList = new ArrayList<>();
while (sc.hasNextInt()) {
numberList.add(sc.nextInt());
}
Collections.sort(numberList);

列表很好,因为您不必明确告诉它大小。这避免了你的第一个循环。现在,循环继续从 System.in 读取,直到遇到非整数并将它们添加到列表中。

最后,它使用Collections.sort对列表进行排序。那有多漂亮?只需几行即可复制您的整个程序。一定要尝试学习您可以使用的库和函数。它可以节省您大量的时间和精力。如果您有疑问,请告诉我。

关于java - 使用扫描器 hasNext() 循环 while,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40362215/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com