给定的问题是: 字符串只能包含 a、b 或 c。不能有 2 个连续的相同字符。第一个和最后一个字符不能相同。现在给定一个带有‘a’、‘b’、‘c’或‘?’的字符串。我们需要找到满足上述条件的替换‘?’的字符串。对于多个答案,显示按字典顺序排列的最小字符串。对于无法回答的情况,显示“不可能”。
import java.util.*;
class Replace {
public static void main(String args[]) {
char[] arr = { 'a', 'b', 'c' };
char Pre, Suc;
Scanner in = new Scanner(System.in);
String str = new String();
String str2 = new String();
System.out.println("Enter the String");
while (in.hasNextLine()) {
str = in.nextLine();
}
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) == '?') {
Pre = str.charAt(i - 1);
Suc = str.charAt(i + 1);
for (int j = 0; j < 3; i++) {
while (arr[j] != Pre && arr[j] != Suc) {
str2 = str.substring(0, i) + arr[j]
+ str.substring(i + 1, (str.length() - 1));
}
}
}
}
System.out.println(str2);
}
}
代码正在编译,没有任何错误。我仍然需要根据问题在代码中添加一些内容,但我试图检查代码到目前为止是否正确,但我没有得到任何输出。欢迎提供任何改进代码的提示/建议。
最佳答案
- 代码
Pre = str.charAt(i-1);
和Suc = str.charAt(i+1);
当“?”时出现问题是第一个/最后一个字母。它将导致java.lang.StringIndexOutOfBoundsException
- 目前您没有离开用于读取输入的
while
循环,因此永远不会到达System.out.println(str2);
。
关于java - 为什么我没有得到输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34698455/