import java.util.*;
import java.util.Arrays;
class stoner {
public static void main(String[] args)
{
Scanner ob = new Scanner(System.in);
int t = ob.nextInt();
int arr[] = new int[501];
while(t-- > 0)
{
int s = ob.nextInt();
for(int i = 0;i<s;i++)
{
arr[i] = ob.nextInt();
Arrays.sort(arr);
}
for(int i = 0;i<s;i++)
System.out.print(arr[i]+" ");
}
}
}
INPUT: 1(测试用例) 5(阵列大小) 5 2 3 1 4(数组元素)
输出: 0 0 0 0 0
为什么即使在使用这种排序功能之后我们也会得到0作为答案???
答案 0 :(得分:2)
如果你只填充数组的5个元素(你输入5作为“数组的大小”),默认情况下,数组的大多数501元素将包含0,并且在对数组进行排序后,0到达之前您输入的正值。
此外,在将所有输入分配到数组后,您应该对数组进行一次排序。
Scanner ob = new Scanner(System.in);
int t = ob.nextInt();
while(t-- > 0)
{
int s = ob.nextInt();
int[] arr = new int[s]; // give the array the correct length
for(int i = 0; i<s; i++)
{
arr[i] = ob.nextInt();
}
Arrays.sort(arr); // sort after reading the inputs
for(int i = 0;i<s;i++)
System.out.print(arr[i]+" ");
}
答案 1 :(得分:0)
你创建了501个元素的int数组 - 全部用0初始化(因为它是int类型)。
接下来,在数组的beginig上放置5个随机整数。所以你在其中有496个零 - 在Arrays.sort(arr)之后,你的数组的前五个元素(你在标准输出上打印)将是零。您应该在数组末尾查找元素,或者使用new int[s]
初始化数组,当然是在知道s的那一刻。