我想用数组来做,同时满足题目要求用while、count,一直做不出来

我想用数组来做,同时满足题目要求用while、count,一直做不出来

//运行结果:
//文本内容:bdfhjlnprt
//统计结果:speeech.txt文件中共有10个字节

public class Test {

	public static void main(String[] args) {
		try {
			FileInputStream fs = new FileInputStream("speech.txt");
			byte b[] = new byte[20];
			int count = 0;
			int n = 0;
			while ((n = fs.read()) != -1) {
				fs.read(b, count, 1);
				count++;
			}
			System.out.println(new String(b));
			System.out.println("speech.txt文件中共有" + count + "个字节");
			fs.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}


正在回答

登陆购买课程后可参与讨论,去登陆

6回答

同学你好,同学的代码中创建两个不同名称的数组变量,这时是不会报错的哦~


同学没有给出课程,老师在这里只能猜测,同学所说视频中创建两个数组变量报错的原因可能是因为:创建了两个同名的数组变量哦~


如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

吃吃吃鱼的猫 2019-06-25 10:55:44

同学你好,同学很棒,理解的很正确哦~

继续加油吧,祝:学习愉快~

  • 提问者 慕哥5118177 #1
    为什么我用数组,建两个对象,能运行,没报错,老师的会报错?
    2019-06-25 16:51:20
提问者 慕哥5118177 2019-06-24 19:20:41
  • 提问者 慕哥5118177 #1
    我把运行记过也贴出来了
    2019-06-24 19:21:10
  • 提问者 慕哥5118177 #2
    循环满足读取fs的下一个字节不是-1,就从对象fs2读入偏移量为count开始的1个字节到数组中。因为操作的是两个对象,所以实现了数组完成作业。
    2019-06-24 19:31:54
  • 提问者 慕哥5118177 #3
    哦,我的speech.txt有21个字母,到t了,所以不会报错。明白了。
    2019-06-24 19:34:34
好帮手慕小班 2019-06-24 10:54:59

        同学你好,如上代码并不能成功运行出来哦!

http://img1.sycdn.imooc.com//climg/5d10395b0001c44b09300684.jpg

其中fs2中的read有参的方法中,第二个参数的含义是从第几个数据开始读,而count的值每次加1,最后就会数组下标越界,出现IndexOutOfBoundsException这个异常!

所以建议同学不要使用数组来完成这个题目哦,同学可以参考这个回答中的代码https://class.imooc.com/course/qadetail/98018   

        如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~


  • 提问者 慕哥5118177 #1
    不用数组的方法我已经知道了。 我就是想用数组来完成题目。 我运行后没有报错啊!我再贴一遍代码
    2019-06-24 19:19:57
  • 提问者 慕哥5118177 #2
    我把运行结果也一起截图了
    2019-06-24 19:21:31
  • 提问者 慕哥5118177 #3
    为什么我没问题,老师不行?
    2019-06-25 16:50:36
提问者 慕哥5118177 2019-06-23 20:23:22
//用数组的方法,多创建一个对象,就可以满足题目要求了
public class Test {
	public static void main(String[] args) {
		try {
			FileInputStream fs = new FileInputStream("speech.txt");
			FileInputStream fs2 = new FileInputStream("speech.txt");
			byte b[] = new byte[20];
			int count = 0;
			int n = 0;
			while ((n = fs.read()) != -1) {
				fs2.read(b, count, 1);
				count++;
			}
			System.out.println("文本内容:" + new String(b));
			System.out.println("统计结果:" + "speeech.txt文件中共有" + count + "个字节");
			fs.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}


好帮手慕阿莹 2019-06-23 10:36:37

1、不建议同学使用数组的方式呦,因为这里我们是要计数的。而同学用数组的话,每次都应该加的是数组的长度,而不是加1了,而且同学还需要判断哪个是最后一次获取数组,因为,如果最后一次数组没有装满,同学就不能加的是数组长度了。

这个时候同学还需要判断哪次是最后一次,以及数组中装了多少个字符。

所以,建议同学这里不用使用数组的方式来计数。

如果我的回答解决了你的问题,请采纳,祝学习愉快

  • 提问者 慕哥5118177 #1
    我多创建一个对象,就可以用数组形式完成题目要求了。
    2019-06-23 20:21:57
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师