为什么我的第一行不会从我的txt文件中打印出来?

时间:2017-02-16 14:48:28

标签: java algorithm for-loop encryption

我希望我的代码能够获取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

2 个答案:

答案 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 ) );