-1
import java.io.*;
import hsa.Console;
import java.awt.*;


    public static void main(String[] args) throws IOException {
        c = new Console();

        String sentence;
        String encrypt = "";
        String vowels = "AEIOUaeiou";
        final String PUNCTAUTION = ".,;?!\"\\/\' -";
        StringBuffer removePunctation = new StringBuffer();
        StringBuffer thirdLetters = new StringBuffer();

        char tempChar;

        //Open The Output File

        PrintWriter output;
        output = new PrintWriter(new FileWriter("output.txt"));

        c.println("Please enter the sentence you would like to encrypt");
        sentence = c.readLine();


        for (int i = 0; i < sentence.length(); i++) {
            tempChar = sentence.charAt(i);

            if (PUNCTAUTION.indexOf(tempChar) == -1) {
                encrypt = encrypt + tempChar;
            }
        }
        if (encrypt == 'A') {
            sentence.replace('A', '!');
        } else if (encrypt == 'I') {
            sentence.replace('I', '#');
        } else if (encrypt == 'E') {
            sentence.replace('E', '@');
        } else if (encrypt == 'O') {
            sentence.replace('O', '$');
        } else if (encrypt == 'U') {
            sentence.replace('U', '%');
        }
        c.println(encrypt.toString().toUpperCase());

        output.println(encrypt.toString().toUpperCase());
    }

我正在尝试删除所有标点符号和空格,并将元音 AEIOU 更改为 !@#$%,但出现错误。我也试图输出我从底部句子中替换的元音并将它们反转。

4

3 回答 3

0

字符串是对象,而 char 是私有数据类型。

您基本上要求计算机执行的操作很像要求它将数字与数字列表进行比较。它不能,仅仅因为它们是两个完全不同的东西。

如下所述,您想使用类似的东西

  if(encrypt.equals("a")){ 

将字符串转换为字符。

于 2013-05-06T02:56:09.863 回答
0

正如编译器试图告诉您的那样,您不能使用==将字符串与字符进行比较。==运算符对原语(例如 a char)和引用类型(例如 a )的工作方式不同,String因此类似的条件if(encrypt == 'U')是无意义的。

于 2013-05-06T02:41:47.070 回答
0

测试字符串是否相等,请使用String.equals(). 例如,"A".equals(encrypt)测试字符串encrypt是否为大写字母 A。

请注意,如上所述,最好将常量字符串放在首位(而不是encrypt.equals("A")),以避免出现空指针异常的可能性。

如果你想要不区分大小写的匹配,还有String.equalsIgnoreCase().


对于您手头的任务(例如,删除/替换所有出现的东西),您可能会考虑使用正则表达式。

例如,将所有大写字母 A 替换为 ! 你可以使用类似的东西:

encrypt.replaceAll("A", "!")

或者,如果您将一遍又一遍地使用相同的正则表达式模式,或者想要灵活地制作不区分大小写的模式,那么:

Pattern a = Pattern.compile("A", Pattern.CASE_INSENSITIVE);
...
a.matcher(encrypt).replaceAll("!");
于 2013-05-06T02:44:09.640 回答