尝试用问号替换字符串中的字母,但继续替换带问号的空格

时间:2018-11-05 06:22:24

标签: java

我正在尝试写一些东西来替换字符串msg中的所有字母到问号。但是,当我运行程序时,它也会用问号替换空格。在我的if语句中,如果要使用字母而不是空格,我想替换为?。

public static void main(String[] args) {
    String msg = "FIG PKWC OIE GJJCDVKLC MCVDFJEHIY BIDRHYO.\n";
    int i;
    char let;

    for (i = 0; i < 43; ++i) {

        let = msg.charAt(i);
            if ( (Character.isLetter(let)) && ! (Character.isWhitespace(let)) ) {
                System.out.print('?');
            }
    }
}

我对此的输出是:????????????????????????????????????

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

当前您只打印'?'如果当前字符应替换为'?',否则不打印任何内容。

您还应该打印不替换为'?'的原始字符:

for (i = 0; i < msg.length(); ++i) {
    let = msg.charAt(i);
    if ( (Character.isLetter(let)) && ! (Character.isWhitespace(let)) ) {
        System.out.print('?');
    } else {
        System.out.print(let);
    }
}

答案 1 :(得分:0)

public class Prog5 {

    public static void main(String[] args) {
        String msg = "FIG PKWC OIE GJJCDVKLC MCVDFJEHIY BIDRHYO.";
        //String decryptKey = "QWERTYUIOPASDFGHJKLZXCVBNM";
        for (int i = 0; i < msg.length(); i++) {
            if (Character.isLetter(msg.charAt(i))) {
                System.out.print("?");
            }else {
                System.out.print(msg.charAt(i));
            }
        }
    }

}