Java пока (scan.nextLine ()! = "$") - PullRequest
       10

Java пока (scan.nextLine ()! = "$")

1 голос
/ 21 февраля 2012

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

Однако я получаю исключение времени выполнения как java.util.InputMismatchException.

Вот код:

while (scan.nextLine() != "$") {
    temp1 = scan.nextInt();
    temp2 = scan.nextInt();
    addEdge(temp1, temp2);
}

Ответы [ 4 ]

6 голосов
/ 21 февраля 2012

Вам нужно использовать строку, которую вы прочитали (внутри условия while).

Когда вы вызываете nextLine (), вы не только проверяете, равно ли оно "$", но и отбрасываете его.

Я полагаю, вы читаете ввод, который выглядит следующим образом: (Держу пари, вы)

1 2
3 4
0 1
4 5
$

попробуйте следующее:

String nextLineStr;
while( !((nextLinestr = scan.nextLine()).equals("$")))
{
String tokens [] = nextLineStr.split(" ");
temp1 = Integer.parseInt(tokens[0]);
temp2 = Integer.parseInt(tokens[1]);
addEdge(temp1,temp2);
}

В качестве примечания: обратите внимание, что я отключил ваш '! =' Для метода, не равного, это потому, что строка не должна сравниваться с использованием == или! =

3 голосов
/ 21 февраля 2012

Во-первых, используйте ! equals вместо != Что касается исключения, возможно, вы вводите $ на nextInt вызовах?

2 голосов
/ 21 февраля 2012

Попробуйте вместо этого:

while (!"$".equals(scan.nextLine()))
0 голосов
/ 21 февраля 2012

Одно из этих двух утверждений выдает исключение -

        temp1 = scan.nextInt();
        temp2 = scan.nextInt();

Что происходит, если вы вводите нецелое значение при вызове.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...