java读取txt输出的问题,还有保存二维数组的问题
a.txt中文本为xxxx|xxxxxxxx|xxxx这种格式,代码如下importjava.io.*;publicclassTest{publicstaticvoidm...
a.txt中文本为
xxxx|xxxx
xxxx|xxxx这种格式,
代码如下
import java.io.*;
public class Test{
public static void main(String[]args)
throws IOException{
StringBuffer sb=new StringBuffer();
BufferedReader br=new BufferedReader(new FileReader("D:\\a.txt"));
String s=br.readLine();
while(s!=null){
sb.append(s);
s=br.readLine();
}
br.close();
s=sb.toString();
String[]str=s.split("\\|");
for(String x:str)
System.out.println(x);
}
}
运行结果是这样的
username1
password1username2
password2username3
password3username4
password4username5
password5username6
password6username7
password7
————————————
希望输出结果如下
username1 password1
username2 password2
username3 password3
username4 password4
username5 password5
username6 password6
username7 password7
该怎么写,再如何把username和password存进一个二维数组,求解答,给完整代码,会有加分。 展开
xxxx|xxxx
xxxx|xxxx这种格式,
代码如下
import java.io.*;
public class Test{
public static void main(String[]args)
throws IOException{
StringBuffer sb=new StringBuffer();
BufferedReader br=new BufferedReader(new FileReader("D:\\a.txt"));
String s=br.readLine();
while(s!=null){
sb.append(s);
s=br.readLine();
}
br.close();
s=sb.toString();
String[]str=s.split("\\|");
for(String x:str)
System.out.println(x);
}
}
运行结果是这样的
username1
password1username2
password2username3
password3username4
password4username5
password5username6
password6username7
password7
————————————
希望输出结果如下
username1 password1
username2 password2
username3 password3
username4 password4
username5 password5
username6 password6
username7 password7
该怎么写,再如何把username和password存进一个二维数组,求解答,给完整代码,会有加分。 展开
展开全部
楼主主题思路没错,但处理细节有误。
1 读文件按行来读没问题,那就没必要再用一个StringBuffer来将已经分行的数据重新拼成一行再拆。
2 实际上你操作的过程如下:
将源文件中数据放在一个String中,内容为
username1|password1username2|……|password(X-1)usernameX|passwordX
然后利用|来拆分,变成
String[] str = {username1,password1username2,…… ,password(X-1)usernameX,passwordX}
再分行打印数组,自然就变成了你输出的情况
修改代码如下
import java.io.*;
public class Test{
public static void main(String[]args)throws IOException{
BufferedReader br=new BufferedReader(new FileReader("D:\\a.txt"));
String s=br.readLine();
while(s!=null){
s=br.readLine();
String[]str=s.split("\\|");
for(String x:str)
System.out.println(x);
}
br.close();
}
}
1 读文件按行来读没问题,那就没必要再用一个StringBuffer来将已经分行的数据重新拼成一行再拆。
2 实际上你操作的过程如下:
将源文件中数据放在一个String中,内容为
username1|password1username2|……|password(X-1)usernameX|passwordX
然后利用|来拆分,变成
String[] str = {username1,password1username2,…… ,password(X-1)usernameX,passwordX}
再分行打印数组,自然就变成了你输出的情况
修改代码如下
import java.io.*;
public class Test{
public static void main(String[]args)throws IOException{
BufferedReader br=new BufferedReader(new FileReader("D:\\a.txt"));
String s=br.readLine();
while(s!=null){
s=br.readLine();
String[]str=s.split("\\|");
for(String x:str)
System.out.println(x);
}
br.close();
}
}
追问
确实是你说的问题,我知道我哪里错了,你那个代码我试了下
username2
password2
username3
password3
username4
password4
username5
password5
username6
password6
username7
password7
Exception in thread "main" java.lang.NullPointerException
at Test.main(Test.java:8)
第一个username和password怎么没有了···
追答
这个应该还和你的那个D:\\a.txt的完整内容有关。第一行有没有空啊,或者其他的一些原因都有关系的。hash表也可以,但我觉得没必要,代码会变得比较冗长
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
为什么要用二维数组,用一个list不就行了。
import java.util.ArrayList;
import java.io.*;
public class Test{
public static void main(String[]args)
throws IOException{
StringBuffer sb=new StringBuffer();
BufferedReader br=new BufferedReader(new FileReader("D:\\a.txt"));
String s=br.readLine();
ArrayList list=new ArrayList();
while(s!=null){
System.out.println(s);
String[] str=s.split("\\|");
list.add(str);
sb.append(str[0]+" "+str[1]+"\r\n");
s=br.readLine();
}
br.close();
System.out.println(sb);
String[][] stri=new String[list.size()][2];
for(int i=0;i<list.size();i++){
String[] str =(String[])list.get(i);
stri[i][0]=str[0];
stri[i][1]=str[1];
}
for(int i=0;i<stri.length;i++){
System.out.println(stri[i][0]+" "+stri[i][1]);
}
}
}
import java.util.ArrayList;
import java.io.*;
public class Test{
public static void main(String[]args)
throws IOException{
StringBuffer sb=new StringBuffer();
BufferedReader br=new BufferedReader(new FileReader("D:\\a.txt"));
String s=br.readLine();
ArrayList list=new ArrayList();
while(s!=null){
System.out.println(s);
String[] str=s.split("\\|");
list.add(str);
sb.append(str[0]+" "+str[1]+"\r\n");
s=br.readLine();
}
br.close();
System.out.println(sb);
String[][] stri=new String[list.size()][2];
for(int i=0;i<list.size();i++){
String[] str =(String[])list.get(i);
stri[i][0]=str[0];
stri[i][1]=str[1];
}
for(int i=0;i<stri.length;i++){
System.out.println(stri[i][0]+" "+stri[i][1]);
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
"username1 password1"
这之间不是有空格吗, 可以这样: "username1 password1".split(" ") ;
得到一个数组, 然后取出你要的值 , 放到数组即可, 但数组里要存 Map , 因为这是 key - value 对 。
这之间不是有空格吗, 可以这样: "username1 password1".split(" ") ;
得到一个数组, 然后取出你要的值 , 放到数组即可, 但数组里要存 Map , 因为这是 key - value 对 。
更多追问追答
追问
a.txt中文本为
xxxx|xxxx
xxxx|xxxx这种格式,
追答
"username1 password1".split(" ") ;
这里改这样
"username1 password1".split("|") ;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你文件中的格式是不是
username1|password1
username2|passwork2
?
如果是这样,你在从文件中读取的时候、
String s=br.readLine();
while(s!=null){
sb.append(s);
s=br.readLine();
String[] temp = s.split("|");
System.out.print(temp[0]);
System.out.print(temp[1]);
//存入二维数组操作
}
username1|password1
username2|passwork2
?
如果是这样,你在从文件中读取的时候、
String s=br.readLine();
while(s!=null){
sb.append(s);
s=br.readLine();
String[] temp = s.split("|");
System.out.print(temp[0]);
System.out.print(temp[1]);
//存入二维数组操作
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
做任务
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询