【问题标题】:Trying to find index of string in array in java试图在java中的数组中查找字符串的索引
【发布时间】:2018-10-14 10:35:54
【问题描述】:

我正在尝试查找数组中最长的字符串的 indexOf,它由字符串 longString 表示。我不断收到“找不到符号”错误,不知道如何解决这个问题

public class Final21 {
       public static String getLongString(String[] array) {
          int x=0;
          int maxLength = 0;
          String longString = null;
          for (String s : array) {
              if (s.length() > maxLength) {
                  maxLength = s.length();
                  longString = s;
              }
          }
          return longString;
      }

         public static String getShortString(String[] array) {
          int minLength = 0;
          String shortString = null;
          for (String t : array) {
              if (t.length() > minLength) {
                  minLength = t.length();
                  shortString = t;
              }
          }
          return shortString;
      }

      public static void main(String[] args) {
          String[] names = {"bob", "maxwell", "charley", "tomtomjack"};
             String longString = getLongString(names);
                System.out.println("The Longest String is: " + longString + " With The Index Of" + names.indexOf(longString));

             String shortString = getShortString(names);
                System.out.println("The Longest String is: " + shortString + " With The Index Of" );
      }

    }

【问题讨论】:

  • 您收到Cannot find symbol 错误的行号是多少?
  • 请尝试具体说明您收到错误的位置。您可以这样做,只需在此处发布您的编译器输出。如果你这样做了,你的问题和答案也会更有成效.. :)
  • @RomeoSierra 哦,是的,对不起......它在 names.indexOf。我是 stackoverflow 的新手,哈哈

标签: java arrays string indexof


【解决方案1】:

问题在于names.indexOf(longString)。因为namesString[] 类型,它是一个数组。这个类型String[]没有有一个名为indexOf的方法定义。作为替代方案,您可以尝试java.util.Arrays.asList(theArray).indexOf(o)

因此,要更正您的代码片段,您可以像这样重写它

System.out.println("The Longest String is: " + longString + " With The Index Of" + java.util.Arrays.asList(names).indexOf(longString));

阅读 java.util.Arrays 的 JavaDoc,以了解如何使用 Java API 在 Java 中处理数组。

此外,您可以通过修改代码的语义来实现相同的目的。 This answer by Elliott Frisch 已经为您做到了。也读一下..

【讨论】:

    【解决方案2】:

    数组中没有indexOf 函数,而不是您当前的方法 - 我将从getLongStringgetShortString 方法返回index;首先假设它是第一个元素。如果任何元素更长(或更短),则更新返回值。喜欢,

    public static int getLongString(String[] array) {
        int max = 0;
        for (int i = 1; i < array.length; i++) {
            if (array[i].length() > array[max].length()) {
                max = i;
            }
        }
        return max;
    }
    
    public static int getShortString(String[] array) {
        int min = 0;
        for (int i = 1; i < array.length; i++) {
            if (array[i].length() < array[min].length()) {
                min = i;
            }
        }
        return min;
    }
    

    那么你可以这样称呼它

    public static void main(String[] args) {
        String[] names = { "bob", "maxwell", "charley", "tomtomjack" };
        int longString = getLongString(names);
        System.out.println("The Longest String is: " + names[longString] + " With The Index Of " + longString);
    
        int shortString = getShortString(names);
        System.out.println("The Longest String is: " + names[shortString] + " With The Index Of " + shortString);
    }
    

    哪些输出

    The Longest String is: tomtomjack With The Index Of 3
    The Longest String is: bob With The Index Of 0
    

    【讨论】:

      【解决方案3】:

      indexOf() 的语法是:

      public int indexOf(char ch);

      它返回此字符串中指定字符第一次出现的索引,如果该字符不出现,则返回-1。

      获得所需的输出。

      您可以尝试通过以下方式更改您的代码;

      public static String getLongString(String[] array) {
           int x=0, maxLength = 0, index = 0;
           String longString = null;
      
           for (String s : array) {
               if (s.length() > maxLength) 
               {
                   maxLength = s.length();
                   index++;
                   longString = s;
               }
           }
       return "The Longest String is: "+ longString + " With The Index Of :" + index;
      }
      
       public static void main(String[] args) {
             String[] names = {"bob", "maxwell", "charley", "tomtomjack"};
             String longString = getLongString(names);
             System.out.println(longString);
      
       }
      

      【讨论】:

      • 我尝试了@Romeo Sierra 的解决方案,它似乎有效。尽管您的解决方案也有效,但它需要更多代码行。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-23
      • 1970-01-01
      • 2020-10-24
      • 1970-01-01
      相关资源
      最近更新 更多