【问题标题】:Unable to execute for loop无法执行for循环
【发布时间】:2013-11-19 16:32:12
【问题描述】:

我是 Java 新手,刚刚编写了一个用于学习目的的程序。 我有两个字符串数组,我想比较两个字符串数组的长度。如果长度相等,则将每个第一个字符串数组的值与每个第二个数组的值进行比较。如果值匹配,则打印该值。 无法纠正问题出在哪里?

     package com.equal.arrat;

    import java.util.ArrayList;
    import java.util.List;

       public class ArrayEqual {
         public static void main(String[] args) {

        String s[] = {"anuj","kr","chaurasia"};
        String s1[] = {"anuj","kr","chaurasia"};

        if (s.length==s1.length)
        {
            System.out.println(s.length);
            for (int i =0 ; i>=s.length;i++)
            {
                for (int j =0 ;j>=s1.length;j++)
                {
                System.out.println("test");
                if (s[i].equals(s1[j]))
                {
                System.out.println("ok" + s[i]);
                }
                else{
                    System.out.println("not ok");
                    }
        }
        }
       }
        else{
            System.out.println("Length Not Equal");
        }
    }
} 

【问题讨论】:

    标签: java


    【解决方案1】:

    使用了不正确的逻辑。你的意思是< 而不是>=

    for (int i =0 ; i>=s.length;i++) 
    

    应该是

    for (int i =0 ; i<s.length;i++)
    

    希望这会有所帮助。 :-)

    【讨论】:

    【解决方案2】:

    一开始你说ij 是0,然后检查for 循环,如果它大于s.length 或者不是,这是假的,所以它没有执行。试试

    for (int i =0 ; i<s.length;i++)
    {
        for (int j =0 ;j<s1.length;j++)
        {
    

    【讨论】:

    • 代码 i 和 j 不正确。您应该改用 j
    【解决方案3】:

    您的for 循环条件检查存在错误。这一行 -

    for (int i = 0; i >= s.length; i++)
    

    应该改成这个——

    for (int i = 0; i < s.length; i++)
    

    同样,改变这一行 -

    for (int j = 0; j >= s1.length; j++)
    

    到这里——

    for (int j = 0; j < s1.length; j++)
    

    【讨论】:

    • 使用&lt;=意味着它也将使用超出范围的i == s.length执行。
    • @FatalError: 抱歉,忘记删除 = 部分。感谢您指出这一点。
    • @Downvoter:评论通常有助于纠正错误。
    【解决方案4】:

    您的比较器在 for 循环中处于关闭状态。这可能是它不起作用的原因

    if (s.length==s1.length)
    {
        System.out.println(s.length);
        for (int i =0 ; i<s.length;i++)
        {
            for (int j =0 ;j<s1.length;j++)
            {
            System.out.println("test");
            if (s[i].equals(s1[j]))
            {
            System.out.println("ok" + s[i]);
            }
            else{
                System.out.println("not ok");
                }
    }
    

    【讨论】:

      【解决方案5】:
      for (int i =0 ; i>=s.length;i++) 
      

      在第一次迭代时,i=0s.length=3i&gt;=s.length 将转换为 0&gt;=3,这是错误的,因此循环不会执行。应该是i&lt;=s.length

      【讨论】:

        【解决方案6】:

        您想比较两个字符串数组的长度。如果长度相等,则将每个第一个字符串数组的值与每个第二个数组的值进行比较。因此您不能使用此&gt;= 来比较长度。

        试试吧

         for (int i =0 ; i<s.length;i++)
            {
                for (int j =0 ;j<s1.length;j++)
                {
        

        【讨论】:

          【解决方案7】:

          for (int i =0 ; i&gt;=s.length;i++) 更改为

          for (int i =0 ; i<s.length;i++)
          

          内循环也一样

          因为你的第一个条件本身并没有得到满足 i=0 并且您正在检查 i>=s.length(在这种情况下表示 3)

          所以你的 for 循环不会被执行

          【讨论】:

            【解决方案8】:

            您的循环不正确。试试

               for (int i=0; i<s.length; i++)
                {
                    for (int j=0; j<s1.length; j++)
                    {
            

            【讨论】:

              猜你喜欢
              • 2015-12-06
              • 1970-01-01
              • 2019-05-16
              • 2021-11-16
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多