Возвращает номер элемента самой длинной строки в массиве - PullRequest
3 голосов
/ 14 июня 2010

Я пытаюсь получить самый длинный метод, чтобы взять введенный пользователем массив строк, а затем вернуть номер элемента самой длинной строки в этом массиве. Я дошел до того, что смог вернуть количество символов в самой длинной строке, но я не верю, что это сработает для того, что мне нужно. Моя проблема в том, что я продолжаю получать несовместимые ошибки типа, пытаясь выяснить это. Я еще не понимаю всю вещь типа данных со строками. Меня смущает то, как я возвращаю номер массива, но массив состоит из строк. Основной метод в порядке, я застрял на ???? часть.

public static void main(String [] args) 
{
    Scanner inp = new Scanner( System.in );
    String [] responseArr= new String[4];

    for (int i=0; i<4; i++)
    {
     System.out.println("Enter string "+(i+1));
     responseArr[i] = inp.nextLine();
    }
    int highest=longestS(responseArr);
}

public static int longestS(String[] values)
{    
    int largest=0

    for( int i = 1; i < values.length; i++ )
    {
        if ( ?????          )

    }
    return largest; 
}

Ответы [ 4 ]

3 голосов
/ 14 июня 2010

Вот как бы я это написал:

public static int findIndexOfLongestString(String[] values)
{     
   int index = -1;

   if ((values != null) && (values.length > 0))
   {
       index = 0;
       String longest = values[0];
       for (int i = 1; i < values.length; ++i)
       {
          if (values[i].length() > longest.length())
          {
             longest = values[i];
             index = i;
          }
       }
   }

   return index;
}
3 голосов
/ 14 июня 2010
    for (int i = 0; i < values.length; i++)
    {
        if (values[i].length() > largest)
        {
            largest = values[i].length();
            index = i;
        }
    }
    return index;

Примечание: инициализируйте int i с 0 - индекс массива основан на 0.

Вернувшись в main, вы можете затем сделать System.out.println("Longest: " + responseArr[highest]); и т. Д.

2 голосов
/ 14 июня 2010

В вашем методе longestS вы захотите сохранить две вещи: наибольшую длину на данный момент и индекс массива наибольшей длины.Также имейте в виду, что индексы массива начинаются с 0 в Java.Цикл for, инициализированный int i = 1, фактически начинается со второго индекса.

1 голос
/ 19 декабря 2011

Мое решение:

public class JavaApplication3
{
    public static void main(String[] args)
    {
        String[] big={"one","two","three"};
        String bigstring=null;
        int maxlength=0;
        for(String max:big)
        {
            if(maxlength<max.length())
            {
                maxlength=max.length();
                bigstring=max;
            }
        }
        System.out.println(bigstring);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...