永发信息网

JAVA输出输入流问题

答案:2  悬赏:80  手机版
解决时间 2021-04-24 11:28

代码如下:

package 检测;
import java.io.*;
public class Main {


public static void main(String[] args) throws IOException {
char ch1;
int ch2;
int numa=0,nume=0,numi=0,numo=0,numu=0;
File file1=new File("D:\\文件用\\JAVA练习\\file1.txt");
try{
FileOutputStream fout=new FileOutputStream(file1);
System.out.println("输入你所需要检测的语段,以?结束:");
ch1=(char) System.in.read();
while(ch1!='?')
{
fout.write(ch1);
ch1=(char) System.in.read();
}
fout.close();
}
catch(FileNotFoundException e)
{
System.out.println(e);
}
catch(IOException e)
{
System.out.println();
}
File file2=new File("D:\\文件用\\JAVA练习\\file1.txt");
try
{
FileInputStream fin=new FileInputStream(file2);
ch2=(char) fin.read();
while(ch2!=-1)
{
switch(ch2)
{
case'a':numa=numa+1;break;
case'e':nume=nume+1;break;
case'i':numi=numi+1;break;
case'o':numo=numo+1;break;
case'u':numu=numu+1;break;
}
}
fin.close();
}
catch(FileNotFoundException e)
{
System.out.println(e);
}
catch(IOException e)
{
System.out.println();
}
System.out.println("文段里面a有:"+numa+"个;"
+"文段里面e有:"+nume+"个;"
+"文段里面i有:"+numi+"个;"
+"文段里面o有:"+numo+"个;"
+"文段里面u有:"+numu+"个");
}

}

我想问的就是...我希望可以我在键盘输入一段字符

跟着下面的input那读取我存字符的文件file1 来判断里面 a,e,i,o,u的个数

如果while(ch2!=-1)
加上了就会造成 CPU占用100% 表示死循环了吧?

我用while(ch2!=-1)是希望可以循环读取 知道完毕

但是这种方法不行,那么用什么方法才可以呢?

最佳答案

因为不清楚您程序的具体要求,所以就按您现有的顺序给您建议。既然您的第一部分已经把输入字符存成了文件,那么在第二部分读取的时候,用文件是否还有内容可以帮您判断是否还需要读下去。以下是我对您第二个try / catch程序段的建议:


try

{


BufferedReader fin=new BufferedReader(new InputStreamReader(file2));

String line = null;

while(null != (line = fin.readLine())) {

for (int i = 0; i < line.length(); i ++) {

ch2 = line.charAt(i);


switch(ch2)

{


case'a':numa=numa+1;continue;

case'e':nume=nume+1;continue;

case'i':numi=numi+1;continue;

case'o':numo=numo+1;continue;

case'u':numu=numu+1;continue;

}


}


}


fin.close();


}


catch(FileNotFoundException e)

{


e.printStackTrace();


}


catch(IOException e)

{


e.printStackTrace();


}


因为您需要不断地读取下一个字符,所以switch语句段需要用continue而不是break。break会导致脱离当前循环。

全部回答
while((ch2=fin.read()) != -1) 你的while里没有继续读字符,所以如果文件不为空,ch2在进入while之前读到了字符,那么就死循环了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
下雨好不好,提议越多越好,大家回答哦……
1991年农历3月10号是阳历几号
藕粉能做面膜吗,纯正的莲藕粉可以用来做面膜
问问:失恋是最寂寞的,如果两个人因为有些原
我的空间动态页面不显示咋办啊。。。套装不能
Q宠大斗乐里入帮有什么作用?
我要减肥…冬天减肥好像有点难…
为什么彩虹岛玩不了。
手机登QQ要多少钱
青岛速达图文有限公司(登州路店)在什么地方啊
表白后她说不知怎么决定那是什么意思
如何查询火车票的真假,火车票下面的编码代表
有谁知道这个品牌?
石家庄到乌鲁木齐的飞机票学生票价是多少
经常作恶梦、这跟心理有关系吗
推荐资讯
淘宝店充值话费怎么开,怎么开淘宝话费充值店
急!两个月大的宝宝拉绿色和黄绿色的大便,是
伤感与烦恼在什么时候最多??
婴儿为什么喜欢哭?
从成都到北京坐火车要经过洛阳吗?
下划线+汉字怎么一起打出来
梦到喜欢的人。 解阿
Jackjones在洛阳有几家官方专卖店!
最近xb360的价格
怎么样才能变得狠一点?
青椒炒什么最好吃?
妈的 老子上英语课从来不听,现在初三了怎么
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?