【问题标题】:Why compare index to -1? [closed]为什么将索引与-1进行比较? [关闭]
【发布时间】:2017-04-28 15:13:11
【问题描述】:

在下面的代码中,他们检查索引不等于 -1 和等于 -1。他们为什么要检查? -1 表示什么?

import java.util.*;


class TestClass {
    public static void main(String args[] ) throws Exception {

        Scanner s = new Scanner(System.in);
        int t = s.nextInt();
        for(int i=0;i<t;i++)
        {
            String str = s.next();

            int index = 0;
            int index1=0 , index2=0, count1=0, count2=0;

            while(index != -1)
            {
                index1 = str.indexOf("SUVOJIT");
                index2 = str.indexOf("SUVO");

                if(index1==index2)
                {
                    if(index1==-1)
                    {
                        break;
                    }
                    count1++;
                    str = str.substring(index1 + 1);
                }
                else
                {
                    count2++;
                    str = str.substring(index2 + 1);
                }
            }
            System.out.println("SUVO = "+count2+", SUVOJIT = "+count1);             
        }    
    }
}

【问题讨论】:

  • 尝试阅读indexOf的文档
  • 代码似乎有问题:index 永远不会在循环中更新。它认为他们宁愿想要while (index2 != -1)
  • @PavneetSingh 谢谢你,先生..!

标签: java arrays string if-statement while-loop


【解决方案1】:

很简单:

-1 是String.indexOf() 在该字符串中没有包含相应字符/字符序列的索引时返回的值。

引用 javadoc:

返回: 指定子字符串第一次出现的索引,如果没有出现,则为 -1。

因此,真正的答案是:首先阅读代码中使用的库方法的现有可用文档!

而且,正如 cmets 所指出的:该代码首先是错误的;因为循环控制变量(索引)被初始化为 0;之后再也没变过;导致无限循环。

【讨论】:

    猜你喜欢
    • 2010-11-20
    • 1970-01-01
    • 2011-06-09
    • 1970-01-01
    • 2016-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-12
    相关资源
    最近更新 更多