Java 为什么不是';它不是为“工作”吗;“xy不平衡”吗;?
如果字符串中的所有“x”字符后面都有一个“y”字符,那么我们就说字符串是xy平衡的。所以“xxy”是平衡的,但“xyx”不是。一个“y”可以平衡多个“x”。给定字符串str,如果给定字符串为xy平衡,则打印“xy平衡”,否则打印“非xy平衡”Java 为什么不是';它不是为“工作”吗;“xy不平衡”吗;?,java,Java,如果字符串中的所有“x”字符后面都有一个“y”字符,那么我们就说字符串是xy平衡的。所以“xxy”是平衡的,但“xyx”不是。一个“y”可以平衡多个“x”。给定字符串str,如果给定字符串为xy平衡,则打印“xy平衡”,否则打印“非xy平衡” public static void main(String[] args) { Scanner scan = new Scanner(System.in); String str = scan.next(); int x =
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
String str = scan.next();
int x = str.length();
boolean xyBalanced = false;
for(int i = x - 1; i >= 0; i--)
{
char y = str.charAt(i);
if(y == 'y')
xyBalanced = true;
else if(y == 'x')
xyBalanced = false;
else
xyBalanced = true;
}
if(xyBalanced = true)
System.out.print("xy balanced");
else if(xyBalanced = false)
System.out.print("not xy balanced");
}
当我输入aabbx时,它给了我“xy平衡”,而实际上它应该给“not xy balanced”。此代码有什么问题?声明:
if(xyBalanced = true)
是赋值运算符,应使用==运算符:
if(xyBalanced == true){
System.out.print("xy balanced");
} else {
System.out.print("not xy balanced");
}
因为它是一个布尔值,你也可以说:
System.out.print( (!xyBalanced? "not" : "") + "xy balanced");
然而,从你的逻辑来看,似乎你也可以说
boolean xyBalanced = str.lastIndexOf('x') < (str.length()-1);
看起来应该是:
for (int i=0;i<x;i++)
for(int i=0;i为什么要从字符串的末尾检查到开头?这很难理解
除了程序末尾的if/else问题(您可以更改为下面的问题),在我更正后,您的程序仍然无法运行
System.out.print(xyBalanced ? "xy balanced" : "not xy balanced");
要检查“x”的右侧是否始终有一个“y”,可以使用以下循环-基本上,“x”始终将xyBalanced标志设置为false,“y”始终将其设置为true
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str = scan.next();
int length = str.length();
boolean xyBalanced = true;
for (int i = 0; i < length; ++i) {
if (str.charAt(i) == 'x') {
xyBalanced = false;
} else if (str.charAt(i) == 'y') {
xyBalanced = true;
}
}
System.out.print(xyBalanced ? "xy balanced" : "not xy balanced");
}
publicstaticvoidmain(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
String str=scan.next();
int length=str.length();
布尔值=true;
对于(int i=0;i
您可以执行以下操作来识别平衡字符串
boolean xyBalanced = inputString.lastIndexOf('x') < inputString.indexOf('y');
boolean xyBalanced=inputString.lastIndexOf('x')
indexOf函数总是返回字符串的第一次出现。我们可以检查x的最后一个索引是否小于y的第一个索引,变量“xyBalanced”将相应地变为true或false。如果(xyBalanced=true)
可能应该是如果(xyBalanced==true)
或者更好:如果(xyBalanced)
。与else if相同。xxy
如何平衡?有两个x
(s),只有一个y
。此外,如果您的逻辑正确,那么它可能只是返回str.lastIndexOf('y')>str.lastIndexOf('x');
@ElliottFrisch我想您是指str.lastIndexOf('x')<(str length()-1)问题是,只要y字符位于y字符的左侧,只有一个y就足以平衡x字符的数量。你应该在回答中添加一个解释。
public boolean xyBalance(String str) {
if(str.endsWith("x")){
System.out.println("false");
return false;
}
if(str.endsWith("y")){
System.out.println("true");
return true;
}
if(str.lastIndexOf("x")>str.lastIndexOf("y")) {
System.out.println("false");
return false;
}
System.out.println("true");
return true;
}
public boolean xyBalance(String str) {
if(str.endsWith("x")){
System.out.println("false");
return false;
}
if(str.endsWith("y")){
System.out.println("true");
return true;
}
if(str.lastIndexOf("x")>str.lastIndexOf("y")) {
System.out.println("false");
return false;
}
System.out.println("true");
return true;
}