java为什么不适用于“非xy平衡”?
如果字符串中的所有“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 = 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”。这个代码有什么问题
# 1 楼答案
您可以执行以下操作来识别平衡字符串
indexOf函数总是返回第一个出现的字符串。我们可以检查x的最后一个索引是否小于y的第一个索引,变量“xyBalanced”将相应地变为true或false
# 2 楼答案
# 3 楼答案
为什么要从头到尾检查?这很难理解
除了程序末尾的if/else问题(您可以改为下面的问题),在我更正后,您的程序仍然无法运行
要检查“x”的右边是否总是有一个“y”,可以使用以下循环-基本上,“x”总是将xyBalanced标志设置为false,而“y”总是将其设置为true
# 4 楼答案
声明:
是赋值运算符,应使用==运算符:
因为它是一个布尔值,你也可以说:
然而,从你的逻辑来看,你似乎也可以说
因为你考虑的是非x/非y角色
所以你可以把所有的代码简化成两行
你的循环也有问题。实际上是从右向左。这是故意的吗
看起来应该是: