вопрос типа переменной Java - PullRequest
0 голосов
/ 18 декабря 2010

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

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

public static String studentGrade(Scanner stdIn)
{
    System.out.print("What student do you want to enter a grade for?");
    String searchName=stdIn.next();
    String index = findStudent(students, searchName);
    int studentId =(int) currentStudentId(students, searchName);

    if (index == searchName) 
    {    
        System.out.println("Student was found, " + index + studentId);
        System.out.println("What is the grade that you want to input for this student?");
        String input = stdIn.next();
        String studentGrade = input;
        return studentGrade;
    }    
    else 
    {    
        System.out.println("not found"); 
    }
}

public static String findStudent(String[] students, String searchName)
{
    for (int i = 0; i < students.length; i++)
    {
        if (students[i].equals(searchName))
        {
            String currentStudentId = i;
            return currentStudentId;
            return searchName;
        }
    } // end for 
    String fail = "fail";
    return fail;
} // end findStudent

Ответы [ 3 ]

2 голосов
/ 18 декабря 2010

Я не думаю, что возвращать как String, так и index как int - это хорошая идея. Почему бы вам просто не вернуть индекс и получить студента, посмотрев в массив, который содержит всех студентов. Если студент не был найден, вы можете вернуть, например, -1.

Вот что я имею в виду:

String[] students = new String[] { ... };

//...

int indexFound = findStudent(students, "John Doe");
if (indexFound >= 0) {
   String studentFound = students[indexFound];
}

PS. Ваш код содержит ошибки (например, команда doubled return )

1 голос
/ 18 декабря 2010

Почему вы хотите вернуть searchName из findStudent() в метод, который передает его через аргумент.

Конечно, метод вызывающей стороны уже имеет значение. Просто верните индекс:

Пример:

public static int findStudent(String[] students, String searchName)
{
    for (int i = 0; i < students.length; i++)
    {
        if (students[i].equals(searchName))
        {
            return i;
        }
    } // end for 
    int fail = -1;
    return fail;
} // end findStudent
0 голосов
/ 18 декабря 2010

Индекс, естественно, является целым числом, а не строкой. Вы должны вернуть int.

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

return ""+currentStudentId;

Однако проблема в том, что вы пытаетесь вернуть два значения.

Я подозреваю, что вы неправильно поняли требования, я предлагаю вам прочитать их снова.

Более короткий пример с использованием varargs

public static int findString(String string, String... strings) {
    for (int i = 0; i < strings.length; i++)
        if (strings[i].equals(string))
            return i;
    return -1; // for not found.
}

Или даже следующие работы для любого типа.

public static <T> int indexOf(T t, T... ts) {
    for (int i = 0; i < ts.length; i++)
        if (ts[i].equals(t))
            return i;
    return -1; // for not found.
}

, например * * 1016

int found = indexOf(5, 1,3,5,7); // found = 2;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...