[原创]一个简单的java 程序
小弟刚学java 需要一个小的程序, 结果程序只编了一点,下面的就没有思路了望各位指教?主要的目的是这样:
输入两个字段一个是姓名一个是成绩,写入到一个指定的txt 文件中, 在不输入内容按回车结束.,然后读出,对成绩排序(大小均可) 并把排序后的,重新写入到一个指定的txt 文件并输出在屏幕上(用system.out输出);望指教.
下面是编入的前半段:(不知道对不对只编入了到排序并没有输入到指定的txt文件,到这就不会,各位大哥大姐帮写完谢谢谢谢)
import java.io.*;
public class Dong{
public static void main(String args[]){
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw=new BufferedWriter(new FileWrite("d:\\grade.txt");
String s;
int i=0;
while(true){
System.out.println("请输入姓名");
s=br.readLine();
if(s.length()==0) break;
bw.writer(s);
bw.newLine();
System.out.println("请输入成绩");
s=br.readLine();
if(s.length()==0) break;
bw.writer(s);
bw.newLine();
i++;
}
br.close();
bw.close();
String a[]=new String[i];
int b[]=new int[i];
int c[]=new int[i];
int j=0,k;
BufferedReader bf=new BufferedReader(new FileReader("d:\\grade.txt");
while(true){
String ss=bf.readLine();
if(ss==null) break;
a[j]=ss;
int greade=Integer.parseInt(ss);
b[j]=greade;
j++;
}
bf.close();
BufferedWriter bw=new BufferedWriter(new FileWrite("d:\\grade1.txt")
for(int m=0;m<b.length-1;m++)
{
k=m;
for(int n=m+1;n<b.length;n++)
if(b[n]>b[k])
k=n;
temp=b[m];
b[m]=b[k];
b[k]=temp;
}
}
}
----------------解决方案--------------------------------------------------------
没用
一大堆错误
----------------解决方案--------------------------------------------------------
23,24,25行的
String a[]=new String[i];
int b[]=new int[i];
int c[]=new int[i];
这三句有问题,i是变量不能用它来做数组的大小定义,否则被认为是动态定义数组不允许。程序写得实在差强人意,先看到这里吧
----------------解决方案--------------------------------------------------------
32行的int greade=Integer.parseInt(ss);有逻辑上的错误啊,写入的数据除了成绩还有姓名吧。姓名不能转换成int。因为你的姓名和成绩的输入是有规律的,因此要全部读出成绩也很简单一行隔一行跳着读就行了。这样读出的全是数字,parse就不会有问题了。目前就这些主要问题。
PS:看你的程序好累啊,简直是遭罪,呵呵~
----------------解决方案--------------------------------------------------------
----------------解决方案--------------------------------------------------------
是的, 现在错误很多我还没有写到头那三个数, 不是你想的那样.我的想法:
第一个数组a是用来读取姓名的,第二个数组是读取成绩的,第三个是数组是读取排完序后的数组的坐标, 这样好输出.
谢谢版主!!!!
----------------解决方案--------------------------------------------------------
这个是从新编了的 ,但是还是不对能写入,但是数组b 的下标还是不能给C数组帮帮忙谢谢!!! import java.io.*; public class K1{ public static void main(String[] args) throws IOException { int m=0; try{ BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw=new BufferedWriter(new FileWriter("d:\\java\\grade.txt")); String s; while(true){ System.out.println("输入姓名"); s=br.readLine(); if(s.length()==0) break; bw.write(s); bw.newLine(); System.out.println("输入成绩"); s=br.readLine(); bw.write(s); bw.newLine(); m=m+1; } br.close(); bw.close(); String a[]=new String[m]; int b[]=new int[m]; int c[]=new int[m]; int j=0; BufferedReader bf=new BufferedReader(new FileReader("d:\\java\\grade.txt")); while(true){ String ss=bf.readLine();//读取grade.txt 中的数据 if(ss==null) break; a[j]=ss; ss=bf.readLine(); int greade=Integer.parseInt(ss); b[j]=greade; j++; } BufferedWriter bw1=new BufferedWriter(new FileWriter("d:\\java\\b.txt")); BufferedWriter br1=new BufferedWriter(new OutputStreamWriter(System.out)); int k,t,f,n; for(int i=0;i<a.length-1;i++){ file://按大小排序,排序后写入b.txt文件中 k=i; for(n=i+1;n<a.length;n++){ if (b[n]<b[k]){ k=n; t=b[i]; b[i]=b[k]; b[k]=t; f=c[i]; c[i]=c[k]; c[k]=f;} } } int i=0; while(true){ String ss=bf.readLine(); if (ss==null) break; br1.write(a[c[i]]); br1.write(","); br1.write(String.valueOf(b[c[i]])); br1.newLine(); i++; } bw1.close(); bf.close(); br1.close(); } catch (FileNotFoundException fe) { System.out.println(fe.toString());} catch (IOException ie) { System.out.println(ie.toString());} } }
----------------解决方案--------------------------------------------------------
哦,明白了,但是那个数组啊,你还是在动态定义啊,这是不可以的!程序的话我帮你写写看。(因为你比那些只知道出题让别人写的可爱多了,至少自己在努力,继续加油啊,自己写能学到很多)
----------------解决方案--------------------------------------------------------
奇怪了,刚做了试验,竟然可以动态定义数组。难道是1.5的新特性?不可能吧?难道记错了?继续帮你看
----------------解决方案--------------------------------------------------------
你的那个数组C不知道是做什么用的。
----------------解决方案--------------------------------------------------------