如何使用3个字符串的循环/条件?

时间:2016-02-10 20:14:37

标签: java loops

我是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;操作

处理此类问题的任何帮助/提示都将非常感激。谢谢。

4 个答案:

答案 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")
    }