Статический метод, который принимает массив строк и возвращает целое число - PullRequest
0 голосов
/ 23 февраля 2019

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

Мой код пока ...

public class test 
{

    public static void main(String [] args) 
    {
      String [] Month = {"July", "August", "September", "October"};
        smallest(Month);
        System.out.println("The shortest word is " + smallest(Month));
    }

    public static String smallest(String Month[]) 
    {
        String first = Month[0];
        for (int i = 1 ; i < Month.length ; i++) 
        {
            if (Month[i].length()<first.length())
             {
                first = Month[i];
            } 
        } 
        return first;
    }
}

Ответы [ 4 ]

0 голосов
/ 23 февраля 2019

Проверьте код ниже,

public class Test {
    public static void main(String [] args) 
    {
      String [] month = {"July", "August", "September", "October"};
     //   smallest(Month);
        System.out.println("The shortest word index position is " + smallest(month));
    }

    public static int smallest(String Month[]) 
    {
        String first = Month[0];
        int position=0;
        for (int i = 1 ; i < Month.length ; i++) 
        {
            if (Month[i].length()<first.length())
             {
                first = Month[i];
                position=i;
            } 
        } 
        return position;
    }

}
0 голосов
/ 23 февраля 2019

Сосредоточение на методе smallest.

public static void smallest(String[] month) {
    // since we have no knowledge about the array yet, lets
    // say that the currently known shortest string has
    // size = largest possible int value java can store 
    int min_length = Integer.MAX_INT, min_length_idx = -1;
    for (int i = 0; i < month.length; i++) {
        // is this current string a candidate for a new minimum?
        if (month[i].length() < min_length) {
            // if so, lets keep track of the length so that future
            // indices can be compared against it
            min_length = month[i].length();
            min_length_idx = i;
        }
    } 
    return min_length_idx;
}

Этот метод будет также охватывать случай, когда в массиве нет строк, т. Е. Пустой массив.

0 голосов
/ 23 февраля 2019
public static int smallest(String month[]) {
   int smallest = 0;
   for ( int i=0; i<month.length; i++ {
     if (...) {
       smallest = i;
     }
   }
   return smallest;
}

Примечание: используйте стандартные соглашения, когда имена переменных начинаются со строчной буквы.

0 голосов
/ 23 февраля 2019

Ваш код на самом деле довольно близок, но - если я правильно понимаю вашу задачу - вместо фактического наименьшего элемента вы должны следить только за индексом, поскольку это то, что вы хотите вернуть в конце.

public static int smallest(String[] months) {
    int first = 0;
    for (int i = 1; i < months.length; i++) {
        if (months[i].length() < months[first].length()) {
            first = i;
        } 
    } 
    return first;
}
...