请问一下,用字节流从txt里读取一串数字,求质数,在输出到另一个txt里,如何将用空格隔开的数字存入数组中。

吃午饭了吗 2019-05-26 11:14:48
我有如下两个疑问:
疑问一:
比如 11 12 133 1444
用字节流存入数组里
数组中存放的是【1】【1】【空格】【1】【2】【空格】【1】……
如何让数组中是【11】【12】【133】【1444】

疑问2:
FileInputStream fis=new FileInputStream(file);
byte buffer[]=new byte[1024];
fis.read(buffer);
我用的是以上代码存入数组,那么在求质数的时候,需要用到循环,如何判断是否已经达到最后一个数字了呢(用的静态数组)

求指导,这道题如何用更简洁的方法做出来(限字节流输入输出)
...全文
96 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
吃午饭了吗 2019-05-27
  • 打赏
  • 举报
回复
引用 2 楼 qq_39936465的回复:
[quote=引用 楼主 q992169836 的回复:] 我有如下两个疑问: 疑问一: 比如 11 12 133 1444 用字节流存入数组里 数组中存放的是【1】【1】【空格】【1】【2】【空格】【1】…… 如何让数组中是【11】【12】【133】【1444】 疑问2: FileInputStream fis=new FileInputStream(file); byte buffer[]=new byte[1024]; fis.read(buffer); 我用的是以上代码存入数组,那么在求质数的时候,需要用到循环,如何判断是否已经达到最后一个数字了呢(用的静态数组) 求指导,这道题如何用更简洁的方法做出来(限字节流输入输出)
我很疑惑你既然是数字运算为什么不直接用int来保存,用字节流也就是一次读取4个字节然后转化为int类型。 按你的逻辑的话只能先把数字一个一个先转string再在string数组中插入空格,然后把string转为char,再把char转byte存储。[/quote] 你好,请问一下用int型存储的话,能够有方法直接讲出去空格的数字直接存入数组中吗,我现在只会 先全部存入数组中,再转为字符串,再用split分割,再存入数组,请问一下有更高效的方法吗
Unicode Escapes 2019-05-27
  • 打赏
  • 举报
回复
将byte数组buffer转成string,用split分割
qq_39936465 2019-05-27
  • 打赏
  • 举报
回复
引用 楼主 q992169836 的回复:
我有如下两个疑问: 疑问一: 比如 11 12 133 1444 用字节流存入数组里 数组中存放的是【1】【1】【空格】【1】【2】【空格】【1】…… 如何让数组中是【11】【12】【133】【1444】 疑问2: FileInputStream fis=new FileInputStream(file); byte buffer[]=new byte[1024]; fis.read(buffer); 我用的是以上代码存入数组,那么在求质数的时候,需要用到循环,如何判断是否已经达到最后一个数字了呢(用的静态数组) 求指导,这道题如何用更简洁的方法做出来(限字节流输入输出)
我很疑惑你既然是数字运算为什么不直接用int来保存,用字节流也就是一次读取4个字节然后转化为int类型。 按你的逻辑的话只能先把数字一个一个先转string再在string数组中插入空格,然后把string转为char,再把char转byte存储。
吃午饭了吗 2019-05-27
  • 打赏
  • 举报
回复
求助求助求助
冲上云霄 、 2019-05-27
  • 打赏
  • 举报
回复
引用 9 楼 qq_39936465 的回复:
配上读取程序

public class test19 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String str;
		try {
			FileInputStream fis=new FileInputStream("test.txt");
			InputStreamReader isr=new InputStreamReader(fis);
			BufferedReader bfr=new BufferedReader(isr);
			while((str=bfr.readLine())!=null) {
				String[] s=str.split(" ");
				int[] t=new int[s.length];
				for(int i=0;i<s.length;i++) {
					t[i]=Integer.valueOf(s[i]);
					System.out.println(t[i]);
				}
			}
			bfr.close();
			isr.close();
			fis.close();
		} catch (NumberFormatException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

显示结果

11
12
133
1444
兄弟,你这个看起来好复杂
qq_39936465 2019-05-27
  • 打赏
  • 举报
回复
配上读取程序

public class test19 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String str;
		try {
			FileInputStream fis=new FileInputStream("test.txt");
			InputStreamReader isr=new InputStreamReader(fis);
			BufferedReader bfr=new BufferedReader(isr);
			while((str=bfr.readLine())!=null) {
				String[] s=str.split(" ");
				int[] t=new int[s.length];
				for(int i=0;i<s.length;i++) {
					t[i]=Integer.valueOf(s[i]);
					System.out.println(t[i]);
				}
			}
			bfr.close();
			isr.close();
			fis.close();
		} catch (NumberFormatException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

显示结果

11
12
133
1444
qq_39936465 2019-05-27
  • 打赏
  • 举报
回复
引用 7 楼 洛可i 的回复:
为啥要String转成char在转成byte,直接转成byte不就行了么
确实可以直接转。

public class test18 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {
			FileOutputStream fos=new FileOutputStream("test.txt");
			int[] i= {11,12,133,1444};
			String[] s=new String[i.length];
			for(int j=0;j<i.length;j++) {
				s[j]=String.valueOf(i[j])+" ";
			}
			for(int j=0;j<i.length;j++) {
				fos.write(s[j].getBytes());
			}
			fos.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

冲上云霄 、 2019-05-27
  • 打赏
  • 举报
回复
引用 2 楼 qq_39936465 的回复:
[quote=引用 楼主 q992169836 的回复:] 我有如下两个疑问: 疑问一: 比如 11 12 133 1444 用字节流存入数组里 数组中存放的是【1】【1】【空格】【1】【2】【空格】【1】…… 如何让数组中是【11】【12】【133】【1444】 疑问2: FileInputStream fis=new FileInputStream(file); byte buffer[]=new byte[1024]; fis.read(buffer); 我用的是以上代码存入数组,那么在求质数的时候,需要用到循环,如何判断是否已经达到最后一个数字了呢(用的静态数组) 求指导,这道题如何用更简洁的方法做出来(限字节流输入输出)
我很疑惑你既然是数字运算为什么不直接用int来保存,用字节流也就是一次读取4个字节然后转化为int类型。 按你的逻辑的话只能先把数字一个一个先转string再在string数组中插入空格,然后把string转为char,再把char转byte存储。[/quote] 为啥要String转成char在转成byte,直接转成byte不就行了么
qq_39936465 2019-05-27
  • 打赏
  • 举报
回复
既然你还是用字符串来操作的话,我觉得你的问题跟用不用字节流没关系,可以直接传化为bufferreader来操作跟简单点。 FileInputStream fis=new FileInputStream ("test.txt"); InputStreamReader isr=new InputStreamReader(fis); BufferedReader bfr=new BufferedReader(isr);
qq_39936465 2019-05-27
  • 打赏
  • 举报
回复
引用 4 楼 q992169836 的回复:
你好,请问一下用int型存储的话,能够有方法直接讲出去空格的数字直接存入数组中吗,我现在只会 先全部存入数组中,再转为字符串,再用split分割,再存入数组,请问一下有更高效的方法吗
如果存储时int转byte[4]的话,可以一次读入byte[4],写个方法转int后直接存入数组,也可以用randomaccessfile或datainputsteam直接readint读出int数据,2数据间舍弃一个byte空格符。

62,625

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧