如何使用扫描仪识别回车

时间:2014-05-11 19:39:11

标签: java java.util.scanner

我需要读取文件中的所有字符,然后将它们转换为莫尔斯电码。这是一个简单的部分。但是我不知道如何使扫描仪识别回车然后让打印机打印出回车。这是我转换文件的代码:

public void encodeFile(String inputFilename, String outputFilename) throws Exception {

    // Scanner to read in and a printwriter to output what we encode
    Scanner in = new Scanner(new File(inputFilename));
    PrintWriter output = new PrintWriter(new FileOutputStream(outputFilename));

    //loop to run through the file and print out the encoded message
    while (in.hasNext()) {

        //temp string to hold the next word in the file
        String temp = null;
        temp = in.next();

        //loop to make the magic happen
        for (int i = 0; i < temp.length(); i++) {
            char m; //temp char to hold the letter to encode
            m = temp.charAt(i); //gets the next char, sets temp equal to it
            output.print(toCode.get(m)); //prints the encoded string
            output.print(" ");
        }
        //prints a * in place of a space
        //output.print("*");
    }

    //closes the file; as is tradition
    output.close();

}

2 个答案:

答案 0 :(得分:1)

而不是使用in.hasNext(),使用in.hasNextLine()并使用in.nextLine()启动temp(现在你知道temp是一行,然后是回车)

现在,temp将是一个包含多个空格的字符串,因为我猜你会想要一个|单词之间(莫尔斯电码)。为此,请向toCode()方法添加空格字符,返回“|” (或者你想在文字之间放置的任何东西)

为了打印出来,请使用

output.print("\n");

答案 1 :(得分:-1)

回车符通常是'\ n'字符(在类Unix系统上)或Windows上的“\ r \ n”。

m = temp.charAt(i); //gets the next char, sets temp equal to it
if(m == '\n') {
    // Carriage return detected ...
}