我试图将这些单词存储在java数组中由昏迷分隔的文件中 该文件是
年龄,收入,学生,信用评级,课程:购买电脑
青少年,高,不,博览会,无
青少年,高,不,优,无
中年,高,不,优秀,没有
高级,中,不,博览会,是
高级,低,是的,博览会,是
高级,低,是的,优秀的,没有
public class Test {
public static void main(String args[]) throws FileNotFoundException, IOException{
FileInputStream f=new FileInputStream("F:\\pr\\src\\dmexam\\inp2.txt");
int size,nr=7,nc=5,j=0,i=0;
char ch;
String table[][]=new String[nr][nc];
size=f.available();
table[0][0]=new String();
while(size--!=0){
ch=(char)f.read();
if(ch=='\n')
{
i++;
if(i>=nr)
break;
table[i][0]=new String();
j=0;
continue;
}
if(ch==',')
{
j++;
table[i][j]=new String();
continue;
}
table[i][j]+=ch;
}
f.close();
System.out.println("The given table is:::---");
for(i=0;i<nr;i++){
for(j=0;j<nc;j++){
System.out.print(" "+table[i][j]);
System.out.print(" ");
}
}
}
}
但输出是
给定的表是::: ---
但是如果for改变了这个
System.out.println("The given table is:::---");
for(i=0;i<nr;i++){
for(j=0;j<nc-1;j++){
System.out.print(" "+table[i][j]);
System.out.print(" ");
}
System.out.println(table[i][nc-1]);
}
输出
给定的表是::: --- 年龄收入学生信用评级:购买电脑
青年高不公平否
青年高不好不
中年高不好不
高级媒体不公平是
高低是赞成是
Senior Low Yes Excellent No
我想知道“为什么System.out.print不是workig ???”...
答案 0 :(得分:8)
PrintStream that System.out
uses有一个内部缓冲区,因为写入stdout是相对昂贵的 - 你不一定要为每个字符做这个。写入换行符时会自动刷新该缓冲区,这就是println
导致文本出现的原因。如果没有该换行符,您的字符串就会位于缓冲区中,等待刷新。
您可以通过调用System.out.flush()
强制手动刷新。
答案 1 :(得分:0)
好的,让我试着帮助你。所以你现在的生活真的很艰难。您是否尝试过查看BufferedWritter / FileWritter等不同的库?
您可以使用以下方法轻松将这些导入项目:
import java.io.BufferedWritter;
import java.io.FileWritter;
还建议使用IOException库捕获错误:
import java.io.IOException;
至于单词的分离,这些库为您提供了控制分隔符的工具。例如,我们可以这样做:
//this is if you are creating a new file, if not, you want true to append to an existing file
BufferedWriter bw = new BufferedWriter(new FileWriter("test.txt", boolean false));
try
{
// write the text string to the file
bw.write("Youth,high,No,Fair,No");
// creates a newline in the file
bw.newLine();
}
// handle exceptions
catch (IOException exc)
{
exc.printStackTrace();
}
// remember to close the file at the end
bw.close();
现在用于硬编码数据,但我们可以使用for循环执行此操作。我们可以在for循环中的函数中添加分隔符,例如:(我不确定你是如何存储数据的,但我假设你把它保存在一个数组中。我也假设总是会有5组数据每行)
BufferedWriter bw = new BufferedWriter(new FileWriter("test.txt", boolean false));
for (int i = 1, i <= listName.size()+1, i++) {
if (i % 5 == 0) {
bw.write(listName.get(i-1));
bw.write(", ");
bw.newLine();
} else {
bw.write(listName.get(i-1));
bw.write(", ");
}
}
这将写入文件:
青少年,高,不,博览会,无
青少年,高,不,优,无
中年,高,不,优秀,没有
高级,中,不,博览会,是
高级,低,是的,博览会,是
高级,低,是的,优秀的,没有
这可能会让您的生活更轻松(如果我清楚地了解您的需求)。下次请确保比你更多地充实你的问题。
免责声明:我没有测试所有代码,所以如果您发现错误,请告诉我,我会根据需要进行编辑。如果我有时间,我会确保它有效。