求矩阵文件的行转列 我有一个矩阵文件特别大,想进行乘积的运算,大概是10000*10000,是两个文件的矩阵相乘,因为矩阵乘积的算法是第一个矩阵的行乘以第二个矩阵的列,但是如果每次都读取第二个矩阵的列比较麻烦,所先把一个矩阵进行转置,然后进行存储。哪位高人能帮我解决一下,不对感激。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我按我的理解写了个简单点的代码import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;public class Test { public static void main(String[] args) { File src = new File("f:/1.txt"); File dist = new File("f:/1_.txt"); transpose(src, dist, " "); } /** * 原文件内容: * 1.1 1.2 1.3 1.4 1.5 * 2.1 2.2 2.3 2.4 2.5 * 3.1 3.2 3.3 3.4 3.5 * 4.1 4.2 4.3 4.4 4.5 * 5.1 5.2 5.3 5.4 5.5 * 6.1 6.2 6.3 6.4 6.5 * 转置后: * 1.1 2.1 3.1 4.1 5.1 6.1 * 1.2 2.2 3.2 4.2 5.2 6.2 * 1.3 2.3 3.3 4.3 5.3 6.3 * 1.4 2.4 3.4 4.4 5.4 6.4 * 1.5 2.5 3.5 4.5 5.5 6.5 * @param src 源文件 * @param dist 新文件 * @param separator 列分隔符 * @since 2008-1-21 */ private static void transpose(File src, File dist, String separator) { BufferedReader br = null; BufferedWriter bw = null; int row = 0; try { // 检查矩阵的行数 br = new BufferedReader(new FileReader(src)); String str; while((str = br.readLine()) != null) { row++; } br.close(); // 读成取矩阵文件 br = new BufferedReader(new FileReader(src)); String[][] matrix = new String[row][]; row = 0; while((str = br.readLine()) != null) { matrix[row++] = str.split(separator); } br.close(); // 重新写入文件 bw = new BufferedWriter(new FileWriter(dist)); for(int j = 0; j < matrix[0].length; j++) { for(int i = 0; i < matrix.length; i++) { if(i > 0) { // 写入分隔符 bw.write(separator); } bw.write(matrix[i][j]); } bw.newLine(); } bw.close(); }catch(IOException e) { e.printStackTrace(); } }} IO初级问题 java static 在内存中的运行情况 怎样把两条sql语句的查询信息都放到JTable里 高手来看看这是怎么回事,关于构造器 大侠们帮 解决下 请教知道圆心和半径,画圆,有没有相应的方法?就是圆心合半径作为参数. JAVA初级问题,请大家教教小弟! 求助:Sin(正弦函数)的图象怎么画啊 怎样消除闪烁? Jbuilder5.0的怪问题 【新手提问】关于InputStreamReader控制台输入出现?号的问题 考过SCJP的看一下,关于选择题,他会告诉考生需要选择几个吗?还是,只告诉考生,把你认为合适的都选出来?
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;public class Test { public static void main(String[] args) {
File src = new File("f:/1.txt");
File dist = new File("f:/1_.txt");
transpose(src, dist, " ");
} /**
* 原文件内容:
* 1.1 1.2 1.3 1.4 1.5
* 2.1 2.2 2.3 2.4 2.5
* 3.1 3.2 3.3 3.4 3.5
* 4.1 4.2 4.3 4.4 4.5
* 5.1 5.2 5.3 5.4 5.5
* 6.1 6.2 6.3 6.4 6.5
* 转置后:
* 1.1 2.1 3.1 4.1 5.1 6.1
* 1.2 2.2 3.2 4.2 5.2 6.2
* 1.3 2.3 3.3 4.3 5.3 6.3
* 1.4 2.4 3.4 4.4 5.4 6.4
* 1.5 2.5 3.5 4.5 5.5 6.5
* @param src 源文件
* @param dist 新文件
* @param separator 列分隔符
* @since 2008-1-21
*/
private static void transpose(File src, File dist, String separator) {
BufferedReader br = null;
BufferedWriter bw = null;
int row = 0;
try {
// 检查矩阵的行数
br = new BufferedReader(new FileReader(src));
String str;
while((str = br.readLine()) != null) {
row++;
}
br.close();
// 读成取矩阵文件
br = new BufferedReader(new FileReader(src));
String[][] matrix = new String[row][];
row = 0;
while((str = br.readLine()) != null) {
matrix[row++] = str.split(separator);
}
br.close();
// 重新写入文件
bw = new BufferedWriter(new FileWriter(dist));
for(int j = 0; j < matrix[0].length; j++) {
for(int i = 0; i < matrix.length; i++) {
if(i > 0) {
// 写入分隔符
bw.write(separator);
}
bw.write(matrix[i][j]);
}
bw.newLine();
}
bw.close();
}catch(IOException e) {
e.printStackTrace();
}
}
}