java编程问题
作者:管理员 来源:新浪爱问 日期:2008-04-10
import java.io.*;
import java.util.*;
public class WriteReadData{
public static void main(String[] args) throws Exception{
File file=new java.io.File("Exercise8_22.txt");
PrintWriter output=new PrintWriter(file);
for(int i=0;i<100;i ){
output.print((int)(Math.random()*1000) " ");
}
Scanner input=new Scanner(file);
int[] num=new int[100];
int j=0;
while(input.hasNext()){
num[j]=input.nextInt();
j ;
}
numSort(num);
for(int i=0;i<100;i ){
if((i 1)==0)
System.out.println(num[i] " ");
else
System.out.print(num[i] " ");
}
output.close();
input.close();
}
public static void numSort(int[] num){
for(int i=1;i<100;i ){
int currentElement=num[i];
int k;
for(k=i-1;k>=0&&num[k]>currentElement;k--){
num[k 1]=num[k];
}
num[k 1]=currentElement;
}
}
}
目的是为了创建一文件并随机写入100个整数,随后再显示出已经被排序过的这100个整数,为什么运行结果输出的都是0呢?想不明白呀~~
电脑问题网给出的最佳答案
java程序是顺序执行的,你的output.close();这条语句写的位置不对,对于文件的写入流还没有结束你就已经在文件中向外读取数据了,这样读出来肯定是错误的,所以要将这条语句提前到Scanner input=new Scanner(file);这条语句之前,在写入文件操作结束,文件内的内容固定了再去读取,这样才会有正确的结果,还有,你下面写的numSort(int[] num)这个排序方法也是错误的,我自己在你的程序上写了一个冒泡的排序法,下面是我改好的程序,测试运行是正确的。
import java.io.*;
import java.util.*;
public class AA{
public static void main(String[] args) throws Exception{
File file=new java.io.File("Exercise8_22.txt");
PrintWriter output=new PrintWriter(file);
for(int i=0;i<100;i ){
output.print((int)(Math.random()*1000) " ");
}
output.close();
Scanner input=new Scanner(file);
int[] num=new int[100];
int j=0;
while(input.hasNext()){
num[j]=input.nextInt();
j ;
}
AA.numSort(num);
for(int i=0;i<100;i ){
if((i 1)==0)
System.out.println(num[i] " ");
else
System.out.print(num[i] " ");
}
input.close();
}
public static void numSort(int[] num)
{
for(int i=99;i>=1;i--)
{
for(int j=0;j<i;j )
{
if(num[j]>num[j 1])
{
int temp=num[j];
num[j]=num[j 1];
num[j 1]=temp;
}
}
}
}
}
谢啦~~~豁然开朗也。。。呵呵~~