我尝试收集用户输入并在输入后对其进行排序" bye"给出。但是我不明白如何完成" bye"部分。 这是我到目前为止所拥有的。有人可以解释为什么我不能添加nextLine()而不是nextInt()并将内容更改为Strings。然后,我可以用字符串" bye"打破while语句。但到目前为止,它都没有对我有用。
import java.util.*;
public class Work {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int[] values = new int[1];
int currentSize = 0;
System.out.print("Type a number ");
while( s.hasNextInt())
{
if(currentSize >= values.length)
{
values = Arrays.copyOf(values, values.length + 1);
}
System.out.print("Type: ");
values[currentSize] = s.nextInt();
currentSize++;
Arrays.sort(values);
System.out.print(Arrays.toString( values ) );
}
}
}
答案 0 :(得分:2)
有人可以解释为什么我不能添加nextLine()而不是nextInt() 并将事情改为Strings。
你可以,你只需要处理转换。
String input = null;
while(!"bye".equalsIgnoreCase(input))
{
value = Integer.parseInt(input.trim());
//..do stuff with the int value
input = s.nextLine();
}
如果您不想相信用户会输入数字,则可能需要处理NumberFormatException
。
答案 1 :(得分:0)
嗯,詹姆斯发布的答案是恰当的!
虽然,如果你想在用户输入“bye”并使用 nextLine()时退出循环,那么这是另一种解决方案。
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int[] values = new int[1];
int currentSize = 0;
System.out.print("Type a number ");
while (s.hasNext()) {
// assign it to local var
String input = s.nextLine();
// check for bye
if (!input.equalsIgnoreCase("bye")) {
if (currentSize >= values.length) {
values = Arrays.copyOf(values, values.length + 1);
}
System.out.print("Type: ");
// add the input value.
values[currentSize] = Integer.parseInt(input.trim());
currentSize++;
Arrays.sort(values);
System.out.print(Arrays.toString(values));
} else {
System.out.println("exiting...");
System.exit(1);
}
}
}
这个在代码中添加了一些分支,用于使用if-else循环进行用户输入字符串比较 希望能帮助到你!