当我到达字符串中的某个字符时,如何打印?

时间:2017-02-07 02:49:33

标签: java encryption char

所以基本上我从一个txt文件读入并写入一个新文件加密副本。教授说在每一行的末尾添加一个0,以便你的程序知道那是该行的结尾。一个例子是

THECATCRIES0

THEDOGCRIES0

问题在于,无论我调整到我的代码,我都无法打印出额外的行,因此我复制的加密版本都打印在一个非常长的行上。我的代码如下

            for(int n = 0; n < first.length()-1; n+=2) {
                 String character = first.substring(n, n + 2);
                 alpha = character.charAt(0);
                 bravo = character.charAt(1);
                 firstLetter = (int)(alpha) - 65;
                 secondLetter = (int)(bravo) - 65;
                 File newFile = new File("newcopy.txt");

                 PrintWriter write = new PrintWriter(new FileWriter(newFile, true));
                 if(secondLetter < 10){
                     write.print(firstLetter);
                     write.print(0);
                     write.print(secondLetter);
                     if(Character.isDigit(bravo) || Character.isDigit(alpha)){
                         write.println();
                     }

                 } else {
                     write.print(firstLetter);
                     write.print(secondLetter);
                     if(Character.isDigit(bravo)|| Character.isDigit(alpha)){
                         write.println();
                     }

                 }write.close();

当我用Google搜索它时,我在网上找到了一个返回布尔值的isDigit方法,该布尔值应该返回true,因为最后有一个0。我尝试将此方法放在if / else语句中,并且我也尝试使用常规的System.out.println(),我认为这不会起作用,因为我使用PrintWriter将我的东西写入新文件。我还应该注意我正在“加密”的内容是全部大写。这是为了在我将加密字母转换为数字时获取加密字母的数字。

1 个答案:

答案 0 :(得分:0)

这是你要找的吗?

try(Stream<String> stream = Files.lines(Paths.get(newFile.toURI()))) {
    stream.forEach(s -> {if(s.endsWith("0")) System.out.println(s);});
} catch (IOException e) {
    e.printStackTrace();
}