如何在java中对数组进行排序?
用户必须进行输入。我的代码如下。为什么它只输出零?解决办法是什么 程序的输出为如何在java中对数组进行排序?,java,arrays,sorting,Java,Arrays,Sorting,用户必须进行输入。我的代码如下。为什么它只输出零?解决办法是什么 程序的输出为0(输入总数) 导入java.util.array; 导入java.util.Scanner; 至少公开课{ 公共静态void main(字符串[]args){ 扫描仪输入=新扫描仪(System.in); int n=input.nextInt(); int[]数组=新的int[107]; 对于(int i=0;i
0
(输入总数)
导入java.util.array;
导入java.util.Scanner;
至少公开课{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
int n=input.nextInt();
int[]数组=新的int[107];
对于(int i=0;i
您正在初始化一个包含107个值0的表。
因此,如果n
较小,则第一个元素将为0
要查看结果,将最后一个循环中的n替换为107,您将看到值,您初始化了一个大小为107的数组,这意味着在接受用户输入之前,数组中最初有107个零。因为输出中有四个零,所以必须取4个值作为输入。因此,数组中有四个非零值和103个零值。应用数组时。排序103个零位于4个非零值之前。因此,当您打印n个值(在本例中为4)时,只会得到零。
您可以改用ArrayList,这样数字只有在用户输入时才会被初始化。Java编程惯例使用camelCase格式的标识符,类以大写字母(AtLast)开头,变量和方法以小写字母开头。您已经初始化了一个大于空格的数组。因此,正如@Mhamad在回答中所解释的那样,这导致了问题。您可以通过像int n=input.nextInt()这样分配输入值来避免它;int[]数组=新的int[n];
import java.util.Arrays;
import java.util.Scanner;
public class atlast {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int[] array = new int[107];
for (int i = 0; i < n; i++) {
array[i] = input.nextInt();
}
Arrays.sort(array);
for (int i = 0; i < n; i++) {
System.out.print(array[i] + " ");
}
}
}
int[] array = new int[107];