【发布时间】:2015-05-14 13:46:37
【问题描述】:
问题: 排序?)编写以下方法,如果列表已经按升序排序,则返回 true。 public static boolean isSorted(int[] list) 编写一个测试程序,提示用户输入一个列表并显示该列表是否已排序。这是一个示例运行。请注意,输入中的第一个数字表示列表中元素的数量。
我的尝试:
import java.util.Scanner;
public class Problem6_19 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter a number. for the length of the list: ");
int listLength = input.nextInt();
int[] number = new int[listLength];
for(int i = 0; i < number.length; i++) {
System.out.println("Enter a value: ");
number[i] = input.nextInt();
}
if (isSorted(number)) {
System.out.println("The list is sorted!");
} else {
System.out.println("The list is NOT sorted!");
}
}
public static boolean isSorted(int[] list) {
for(int i = 0; i < list.length; i++) {
if (list[i] > list[i + 1]) {
return false;
} else {
return true;
}
}
return false;
}
}
但是有一个问题。在问题中它提示用户输入列表,第一个元素是该列表的长度。这意味着我们只需要提示用户一次。那么请解释一下第一个元素如何变成数组的大小?
【问题讨论】:
-
我想到了查看您的代码
ArrayIndexOutOfBoundsException。 (list[i + 1]可能有i == list.length-1) -
另外,您检查的是
array而不是list -
所以,数组的大小是固定的。例如,如果用户输入 8 10 1 5 16 61 9 11 1 那么 8 将是它的长度。这一步代码怎么做??
-
如果用户输入了 4 1 3 4 5 那么 4 就是它的长度。这个代码怎么写?
-
您的
isSorted方法有误。循环只会执行一次。如果你有1 2 3 5 4怎么办?你需要摆脱else { return true; }
标签: java arrays java.util.scanner