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更改为!@#$%,但我收到错误。我也试图从底部的句子输出我替换的元音并反转它们。
答案 0 :(得分:0)
正如编译器试图告诉您的那样,您无法使用==
将字符串与字符进行比较。 ==
运算符对基元(例如char
)和引用类型(例如String
)的工作方式不同,因此if(encrypt == 'U')
之类的条件是无意义的。
答案 1 :(得分:0)
要test strings for equality,请使用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("!");
答案 2 :(得分:0)
字符串是对象,而char是私有数据类型。
你基本上要求计算机做的就像要求它将数字与数字列表进行比较。它不能,因为那是完全不同的两件事。
如下所述,您希望使用类似
的内容 if(encrypt.equals("a")){
将字符串驻留到字符。