{
try
{
int i, sum=0
FileWriter f_out=new FileWriter("data.txt")
System.out.println("请输入学生的个数")
int n=new Scanner(System.in).nextInt()
int s[]=new int [n]
for( i=0i<ni++)
{
System.out.println("请输入第"+(i+1)+"个学生的成绩")
s[i]=new Scanner(System.in).nextInt()
if (s[i]<0||s[i]>100)
{
System.out.println("输入错误,请重新输入")
s[i]=new Scanner(System.in).nextInt()
}
}
Arrays.sort(s)
for(int j=0j<nj++){
f_out.write(s[j]+"\n")
}
f_out.close()
FileReader f_in=new FileReader("data.txt")
for(int c=f_in.read()c!=-1c=f_in.read())
System.out.print((char)c+" ")
f_in.close()
}
catch(IOException e)
{
System.err.println(e)
e.printStackTrace()
}
}
这样应该就好了。
对数组进行随机排序分为两种形式,一种是完全随机排序,一种是不完全随机排序,区别是完全随机对数组中原先任意的数据不会出现在原来的位置上,那么,一般来说,完全随机排序的需求会相对较大,我在此先给出完全随机方式,如果你需要不完全随机排序,可以再说:举个例子:有一批数据,共n个,依次为a1,a2,a3,…,an-1,an,需要对它们进行完全随机排序。排序方法类似于直接选择,从左至右,即从ai+1~an中随机抽取一个数据与ai交换(1≤i≤n-1)。先排序第一个数据a1:从a2~an中随机抽出一个数据与a1交换;再排第二个数据a2:从a3~an中随机抽取一个数据与a2交换;再排第三个数据a3:从a4~an中随机抽取一个数据与a3交换;…;最后排第n-1个数据an-1:从an~an中随机抽取一个数据与an-1交换;第n个数据已不需要排序。这样,总共需要排n-1次。 从以上的算法分析中可以看出,每个待排序数据都会与其它数据交换位置,所以,每个数据都不会出现在原先的位置上,这是完全随机排序。
package ssspublic class F{
public static void main(String[] args)
{
int ns[]={1,2,3,4,5,6}
int t=0
for(int i=0i<6i++)
{
for(int j=5j>0j--)
{
if(ns[j]>ns[j-1])
{
t=ns[j]
ns[j]=ns[j-1]
ns[j-1]=t
}
}
}
for(int i=0i<6i++)
{
System.out.println(ns[i])
}
}} 我用你的代码重新写一次,运行过,没什么问题吖, 所有的数字都按大到小排序,你可以对比对比我写这个代码,看你原本的代码哪里出错了