Java 为什么我得不到输出?
问题是: 字符串只能包含A、b或c。不能有两个连续的相同字符。第一个和最后一个字符不能相同。现在给定一个带有“a”、“b”、“c”或“?”的字符串。我们需要找到满足上述条件的替换“?”的字符串。对于多答案,按字典顺序显示最小字符串。对于无应答可能显示“不可能”Java 为什么我得不到输出?,java,Java,问题是: 字符串只能包含A、b或c。不能有两个连续的相同字符。第一个和最后一个字符不能相同。现在给定一个带有“a”、“b”、“c”或“?”的字符串。我们需要找到满足上述条件的替换“?”的字符串。对于多答案,按字典顺序显示最小字符串。对于无应答可能显示“不可能” import java.util.*; class Replace { public static void main(String args[]) { char[] arr = { '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);
}
}
import java.util.*;
类替换{
公共静态void main(字符串参数[]){
char[]arr={'a','b','c'};
char-Pre,Suc;
扫描仪输入=新扫描仪(系统输入);
String str=新字符串();
String str2=新字符串();
System.out.println(“输入字符串”);
while(在.hasNextLine()中){
str=in.nextLine();
}
对于(int i=0;i
代码正在编译,没有任何错误。我仍然需要根据问题向代码中添加一些东西,但我试图检查代码到目前为止是否正确,但我没有得到任何输出。欢迎提供任何改进代码的提示/建议。问题是程序在(in.hasNextLine()){str=in.nextLine();}循环时卡在了
中。没有退出条件hasNextLine
将被阻止,直到输入新行。根据Javadoc:
此方法在等待输入时可能会阻塞
问题是程序在(in.hasNextLine()){str=in.nextLine();}
循环时卡在中。没有退出条件hasNextLine
将被阻止,直到输入新行。根据Javadoc:
此方法在等待输入时可能会阻塞
- 代码
Pre=str.charAt(i-1)代码>和Suc=str.charAt(i+1)当“?”是第一个/最后一个字母时,代码>有问题。它将导致java.lang.StringIndexOutOfBoundsException
- 目前,您没有离开用于读取输入的
循环,因此系统.out.println(str2)代码>从未到达
- 代码
Pre=str.charAt(i-1)代码>和Suc=str.charAt(i+1)当“?”是第一个/最后一个字母时,代码>有问题。它将导致java.lang.StringIndexOutOfBoundsException
- 目前,您没有离开用于读取输入的
循环,因此系统.out.println(str2)代码>从未到达
您需要一个条件来中断第一个while循环。当用户插入输入字符串时,他按enter键,因此扫描仪将第二个输入作为空字符串。您可以检查空字符串并退出while循环
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())
{
if(str.isEmpty()) break;
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);
}
}
import java.util.*;
类替换
{
公共静态void main(字符串[]args)
{
char[]arr={'a','b','c'};
char-Pre,Suc;
扫描仪输入=新扫描仪(系统输入);
String str=新字符串();
String str2=新字符串();
System.out.println(“输入字符串”);
while(在.hasNextLine()中)
{
如果(str.isEmpty())中断;
str=in.nextLine();
}
对于(int i=0;i您需要一个条件来中断第一个while循环。当用户插入输入字符串时,他按enter键,以便扫描仪将第二个输入作为空字符串。您可以检查空字符串并退出while循环
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())
{
if(str.isEmpty()) break;
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);
}
}
import java.util.*;
类替换
{
公共静态void main(字符串[]args)
{
char[]arr={'a','b','c'};
char-Pre,Suc;
扫描仪输入=新扫描仪(系统输入);
String str=新字符串();
String str2=新字符串();
System.out.println(“输入字符串”);
while(在.hasNextLine()中)
{
如果(str.isEmpty())中断;
str=in.nextLine();
}
对于(int i=0;第一个技巧是使用IDE的格式菜单选项。你的程序完全没有缩进,几乎不可读。再加上像str
和str2
这样没有意义的变量名,你真的很难帮到你。第一个技巧是使用IDE的格式菜单选项。你的程序它完全没有缩进,几乎不可读。再加上像str
和str2
这样毫无意义的变量名,你真的很难得到帮助。另外,for(int j=0;jAnd,内部while
循环也将永远循环,因为中没有一个值(arr[j]!=Pre&&arr[j]!=Suc)
在主体中更改。因此,代码有3个嵌套循环,所有循环都将永远循环。哎呀!另外,for(int j=0;jAnd,内部,而循环也将永远循环,因为(arr[j]!=Pre&&arr[j]!=Suc)中的任何值都不会在主体中更改。因此,代码有3个嵌套循环,所有循环都将永远循环。哎呀!