做上机题,遇到问题
import java.io.*;
import java.util.*;
class Sorts
{
public static void main(String args[])throws Exception
{
int count;
byte b[]=new byte[1024];
InputStreamReader in;
FileWriter out;
BufferedReader br;
FileInputStream fis;
FileOutputStream fos;
try{
in=new InputStreamReader(System.in);
br=new BufferedReader(in);
out=new FileWriter( "F:\\1\\Test\\3\\test.txt ");
System.out.println( "请输入#结束键盘输入: ");
String str=br.readLine();
while(!str.equals( "# ")){
out.write(str+ "\r\n ");
str=br.readLine();
}
in.close();
out.close();
br.close();
}catch(IOException e){}
fis=new FileInputStream ( "F:\\1\\Test\\3\\test.txt ");
fos=new FileOutputStream( "F:\\1\\Test\\3\\test1.txt ");
try{
while((count=fis.read(b,0,1024))!=-1){
int c[] = new int[20];
for(int i=0; i <20; i++) {
if (b[i] != 32 && b[i] != 13 && b[i] != 10)
c[i] = b[i];
}
Arrays.sort(c);
for(int i=0; i <20; i++) {
fos.write(c[i]);
fos.write(32);
}
}
fis.close();
fos.close();
}catch(IOException e){
System.out.println( "Error: "+e);
}
}
}
为什么它把12之类的2位数当作1和2来处理?排序后就不对了
比如说我输入
12 3 4 5
#
得到的结果却是:
1 2 3 4 5
我想要的结果是 :
3 4 5 12
[解决办法]
因为你读的时候是直接读的一行而处理的时候是对一个个字符处理的
[解决办法]
我虽然没有回答您的问题,但也帮您顶了下,求您给小女几分好吗?我非专业,但需要点分提问啊!
呵呵,谢谢!!
[解决办法]
汗 排序要写的这么麻烦么?
[解决办法]
首先,你并没有排序。
其次,出现“1 2 3 4 5”结果是因为:
for(int i=0; i <20; i++) {
if (b[i] != 32 && b[i] != 13 && b[i] != 10) //这个if把空格换行全过滤掉了,c数组里面结构是:12345;
c[i] = b[i];
}
for(int i=0; i <20; i++) {
fos.write(c[i]);
fos.write(32);
}
//这个输出语句是打印一个字符就打印一个空格,这样就形成了“1 2 3 4 5”
[解决办法]
当然是这样了,因为读字节的时候没一个字符是一个字节, 然后12就需要长度为2 的byte数组了。
你可以把byte数组转换成String然后解析。
或者你字节读readLine();
