我是java的新手,还不太熟悉循环。
我有一个作业问题,在程序中已经有3个字符串(s,t,w)在main中创建了。我必须编写一个或多个语句,添加到main中,这将确定三个字符串是否具有相同的长度。如果他们这样做,我的代码应该打印“是”。如果没有,我的代码应打印“否”。
我尝试输入以下代码:
for(int j = 0; j < s.length(); j++){
if (s.charAt(j) = t.charAt(j) = w.charAt(j))
System.out.println("yes");
else
{
System.out.println("no");
}
}
但是我收到了这个错误:
compilation error (line 2, column 15) : unexpected type
我不明白这个错误意味着什么?更重要的是,为什么我写的代码不正确?我需要一个&amp;&amp;操作
处理此类问题的任何帮助/提示都将非常感激。谢谢。
答案 0 :(得分:6)
你的错误是在条件语中你必须返回一个布尔值,所以isn&t = t = t,使用而不是= =(这意味着它是一个比较)。
=符号表示分配,如下所示:
int x = 3; //x <- 3
定义变量x并将值3存储在其上。
试试这个
if(s.length() == w.length() && w.length() == t.length())
{
System.out.println("yes");
}
else
{
System.out.println("no");
}
答案 1 :(得分:1)
无论Horacio写的是绝对正确的,并且没有真正需要循环。
你可能需要一个循环来逐字手动比较字符串,看看它们是否相同,看起来更像是你尝试使用charAt方法做的事情(用双重赋值=
代替等于==
)
说实话,这是一种比较方法equals
更容易比较字符串值(不是引用)的方法。
boolean areThreeStringsEqual(String a, String b, String c)
{
return a.equals(b)&& b.equals(c);
}
但是为了你的任务,你可以做到
for(int j = 0; j < s.length(); j++)
{
if (s.charAt(j) == t.charAt(j)&& t.charAt(j) == w.charAt(j)
System.out.println("yes");
else
System.out.println("no");
}
如果字符串长度不同,则会出现此代码的问题。如果t小于s,则会因为超出数组边界而得到运行时错误。为了避免这样的错误,您可以比较三个字符串的长度并使用它运行循环
条件j < somestring.length()
当somestring符号表示三者中最短的时候。
答案 2 :(得分:0)
该错误仅表示问题出在该类的第二行。是的,你需要&符号。另外,在测试相等性时使用==。您想要的实现不清楚,因为您要根据长度进行比较,但在您的代码中,您似乎正在尝试比较字符的相等性。由于一个答案已经解决了长度问题,这个问题解决了字符平等问题。
for(int j = 0; j < s.length(); j++)
{
// Find out the char value at index j of an arbitrary string.
char c = s.charAt(j);
// If the char at index j of ALL strings is the same as c:
if ((s.charAt(j) == c)&&(t.charAt(j) == c)&&(w.charAt(j) == c))
{
System.out.println("yes");
}
else
{
System.out.println("no");
}
}
答案 3 :(得分:0)
您需要使用==
代替=
,因为=
用于为变量赋值。另一方面,==
用于比较。
此外,您确实需要一个&&
运算符,如
if(s.charAt(j) == t.charAt(j) == w.charAt(j))
{
}
告诉Java查看char
s.charAt(j)是否等于boolean
,它检查t.charAt(j)是否等于w.charAt(j)
以下是您想要的if语句:
if(s.charAt(j) == t.charAt(j) && s.charAt(j) == w.charAt(j))
{
System.out.println("yes")
}
else
{
System.out.println("no")
}