我希望我的代码能够获取user=> (load-file "/tmp/test.clj")
test.cljnil
文件的第一行&以某种方式打印它,我以为我有正确的想法,但在控制台内没有发生任何事情。
这是我的.txt
文件:
.txt
这是我的ABCDEFGHIJKLMNOPQRSTUVWXYZOOOOOOO
12345678912345678912345678912
文件:
.java
我希望我的代码只从我的import java.io.*;
public class EncryptDecrypt {
public static void encrypt() throws IOException {
BufferedReader in = new BufferedReader(new FileReader("cryptographyTextFile.txt"));
String line = in.readLine();
int iterator = 0;
char[][] table = new char[6][5];
// fill array
for(int i = 0; i < 6; i++) {
for(int j = 0; j < 5; j++) {
table[i][j] = line.charAt(iterator++);
}
}
// print array
for(int i = 0; i < 6; i++) {
for(int j = 0; j < 5; j++) {
System.out.print(table[i][j] + " ");
}
System.out.println();
}
}
public static void main(String[] args) throws IOException {
encrypt();
}
}
文件中获取第一行并将其打印出来:
.txt
这是ABCDE
GHIJK
MNOPQ
STUVW
XYZOO
OOOOO
我得到的:
error
答案 0 :(得分:0)
您的输出与所需的输出不同(因为它有效),因为您没有对每个第6个字符进行过滤。我认为这就是你要做的事情......
我认为我通过使用模数找到了您的解决方案,您可以搜索每个第6个数字。即6%6 = 0而5%6 = 1
// fill array
for (int i = 0; i < 6; i++) {
for (int j = 0; j < 5; j++) {
if ((iterator + 1) % 6 == 0) {
iterator++;
j--;
} else {
//System.out.println(i+" "+ j + " " +iterator + " " + line.charAt(iterator));
char t = line.charAt(iterator++);
table[i][j] = t;
}
}
}
还要在字符串中添加2个字符。 line.charAt(iterator ++)正在搜索java.lang.StringIndexOutOfBoundsException。这就是你收到错误的原因
答案 1 :(得分:0)
原生substring()
方法可以帮助您处理某些条件和增量
String str = "ABCDEFGHIJKLMNOPQRSTUVWXYZOOOOOOO";
int ite = str.length() / 5;
int i = 0, j = 0;
while ( i < ite ) {
System.out.println( str.substring( j, ( j += 5 ) ) );
i++;
}
System.out.println( str.substring( ite * 5, str.length() % 5 + ite * 5 ) );