所以我正在使用IntelliJ,突出显示替换流行语。大多数技巧都在我的脑海中,所以我忽略了它们,但我得到的是这个结果是string.replace的结果被忽略了。为什么呢?
我需要(string = string.replace(string.charAt(i));
)吗?
import java.util.Scanner;
public class PhoneNumberDecipher {
public static String phoneNumber;
public static String Decipher(String string) {
string = phoneNumber;
for(int i =0; i<=phoneNumber.length(); i++) {
if(string.equalsIgnoreCase("A")
||string.equalsIgnoreCase("B")
||string.equalsIgnoreCase("C")) {
string.replace(string.charAt(i),'2')
}
else if(string.equalsIgnoreCase("D")
||string.equalsIgnoreCase("E")
||string.equalsIgnoreCase("F")) {
string.replace(string.charAt(i),'3');
}
else if(string.equalsIgnoreCase("G")
||string.equalsIgnoreCase("H")
||string.equalsIgnoreCase("I")) {
string.replace(string.charAt(i),'4');
}
else if(string.equalsIgnoreCase("J")
||string.equalsIgnoreCase("K")
||string.equalsIgnoreCase("L")) {
string.replace(string.charAt(i),'5');
}
else if(string.equalsIgnoreCase("M")
||string.equalsIgnoreCase("N")
||string.equalsIgnoreCase("O")) {
string.replace(string.charAt(i),'6');
}
else if(string.equalsIgnoreCase("P")
||string.equalsIgnoreCase("Q")
||string.equalsIgnoreCase("R")
|| string.equalsIgnoreCase("S")) {
string.replace(string.charAt(i),'7');
}
else if(string.equalsIgnoreCase("T")
||string.equalsIgnoreCase("U")
||string.equalsIgnoreCase("V")) {
string.replace(string.charAt(i),'8');
}
else if(string.equalsIgnoreCase("W")
||string.equalsIgnoreCase("X")
||string.equalsIgnoreCase("Y")
||string.equalsIgnoreCase("Z")) {
string.replace(string.charAt(i),'9');
}
}
return string;
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Please Enter a Phone Number you Wish to Decipher...");
phoneNumber = input.nextLine();
System.out.print(Decipher(phoneNumber));
}
}
答案 0 :(得分:5)
String
个对象为immutable。
来自docs:
public String replace(char oldChar,char newChar)
返回一个字符串,该字符串是用newChar替换此字符串中所有出现的oldChar而生成的。
希望这有帮助。
答案 1 :(得分:2)
IntelliJ抱怨你正在调用一个方法,它的唯一作用是返回一个值(String.replace),但你忽略了那个值。该计划目前没有做任何事情,因为你丢掉了它所做的所有工作。
您需要使用返回值。
那里还有其他的bug。如果你使用这些代码,你可能会进一步发展:
StringBuilder convertedPhoneNumber = new StringBuilder();
// Your loop begins here
char curCharacter = phoneNumber.charAt(i);
if (curCharacter == 'a') {
convertedPhoneNumber.append("2");
}
// More conditional logic and rest of loop goes here.
return convertedPhoneNumber.toString();
答案 2 :(得分:1)
使用该语句
string = string.replace(string.charAt(i));
为什么?字符串是一个不变的对象。查看this thread以获得完整的说明。这是Java的基础部分,因此请确保您学习得很好。
答案 3 :(得分:1)
我有同样的问题,但是我这样做是这样的:
String newWord = oldWord.replace(oldChar,newChar);