永发信息网

JAVA输入输入流问题

答案:2  悬赏:50  手机版
解决时间 2021-04-16 06:21
  • 提问者网友:贪了杯
  • 2021-04-16 02:08

代码如下请看:

package p1536;
import java.io.*;

public class Main {

public static void main(String[] args) throws IOException {
int ch;
File file1=new File("D:\\文件用\\JAVA练习\\file2.txt");
try
{
FileOutputStream fout=new FileOutputStream(file1);
System.out.println("--------------随机生成50个数中----------------");
//ch=(char) System.in.read();
//为了简单设为50个数
for(int i=0;i<50;i++)
{
ch=(int)(100*Math.random());
fout.write(ch);
}
fout.close();
}
catch(FileNotFoundException e)
{
System.out.println(e);
}
catch(IOException e)
{
System.out.println();
}
int ch2,max=0,min=0,sum=0;
int a[]=new int[50];
File file2=new File("D:\\文件用\\JAVA练习\\file2.txt");
try
{
FileInputStream fin=new FileInputStream(file2);
for(int j=0;j<50;j++)
{
a[j]=fin.read();
}
fin.close();
max=a[0];
min=a[0];
for(int z=1;z<50;z++)
{
sum=sum+a[z];
if(a[z]>max)
{
max=a[z];
}
if(min>a[z])
{
min=a[z];
}
}
}
catch(FileNotFoundException e)
{
System.out.println(e);
}
catch(IOException e)
{
System.out.println();
}
System.out.println("最大值为:"+max);
System.out.println("最小值为:"+min);
System.out.println("和为:"+sum);
}
}

我想问..我生成文件 file1.txt 怎么里面是乱码?原因何在?
最佳答案
  • 五星知识达人网友:詩光轨車
  • 2021-04-16 03:03

问题在于你写入的类型。你写入的ch 是int类型,在写入的时候,int类型会被转换为相应的字符。比如你写入50,文本文件里面应该是显示2,因为主键盘的2对应的键码就是50。你可以这样改下:


fout.write(String.valueOf(ch).getBytes());

全部回答
  • 1楼网友:舍身薄凉客
  • 2021-04-16 03:45
在你读取文件的时候,要用readLine().否则如果碰到中文字符的话,它只会读取半个字符,那么当然就产生乱码啦。所以写出来的文件里面也是乱码,你把read()改成readLine(),应该就没事了。希望对你有帮助!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯