为什么readline给出额外的一行?

时间:2015-10-11 19:02:07

标签: java

我从3/4小时开始研究这段代码。现在我觉得如果有人帮助我,我无法修复它。这是UVA 10082.当我输入时总会有一个额外的换行符。这是不可取的。

当我在UVA上运行时...总是说错了答案。但是我在电脑上查了一下,没关系。

import java.util.Scanner;
public class WERTYU {

public static void main(String args[]) {
    char keyboard[][] = {
        {'`', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '='},
        {'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', '[', ']', '\\'},
        {'A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', ';', '\''},
        {'Z', 'X', 'C', 'V', 'B', 'N', 'M', ',', '.', '/'}
    };
    Scanner in = new Scanner(System.in);
    while (in.hasNext()) {
        String line = in.nextLine();
        char letter[];
        letter = line.toCharArray();
        for (int i = 0; i < letter.length; i++) {
           //if (letter[i] == ' ')System.out.print("");
            if (letter[i] == 'Q' || letter[i] == 'A' || letter[i] == 'Z' || letter[i] == '`') {
                System.exit(0);
            } else {
                for (int m = 0; m < 4; m++) {

                    for (int n = 1; n < keyboard[m].length; n++) {

                        if (letter[i] == keyboard[m][n]) {
                            letter[i] = keyboard[m][n - 1];
                        }

                    }

                }
                System.out.print(letter[i]);

            }

        }

    }

 }
}

输入:

O S, GOMR YPFSU/

输出:

[new Line]
I AM FINE TODAY.

如果您输入WSA,则会出现错误。程序应终止为Q A Z并且“无法输入。但它正在给出

 QA

0 个答案:

没有答案