Java чтение ввода - PullRequest
       4

Java чтение ввода

0 голосов
/ 17 апреля 2011

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

//using Scanner
int num = 0;
int x;
int y;

System.out.println("Number of points");
int  num = scan.nextInt();

for(int i=0; i < num;i++)
{

    x = scan.nextInt();
    y = scan.nextInt();

    Point p = new Point(x,y);
    //using ArrayList<Point>   
    pts.add(p);
}

Проблема, с которой я сталкиваюсь, заключается в том, что он получает ввод, как этот

2    //number of points
0    // x1
0    //y1
3    //x2
5    //y2

Как я могу сделатьтак, чтобы это выглядело так

2
0 0
3 5

?

Большое спасибо за вашу помощь

Ответы [ 2 ]

2 голосов
/ 17 апреля 2011

Проблема в том, что вы используете команды сканера, которые не достигают возврата каретки. Вам нужно изменить подход. Лучше всего, если вы прочитаете текст из входных данных, а затем подтвердите предоставленный текст, чтобы убедиться, что он соответствует вашим критериям. Вы можете также рассмотреть вопрос об использовании класса java.io.Console (хотя, если вы используете Eclipse, у вас будут проблемы с работой этого класса, В Eclipse есть ошибка, связанная с выделением консоли ) .

Например, чтобы узнать количество точек, вы можете сделать это следующим образом со своим сканером:

System.out.print("Number of points: ");
int num = Integer.valueOf(scanner.nextLine());

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

String arguments = scanner.nextLine();
String[] coordinates = arguments.split(" ");
int x = Integer.valueOf(coordinates[0]);
int y = Integer.valueOf(coordinates[1]);
Point p = new Point(x, y);

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

0 голосов
/ 17 апреля 2011

«простым» способом является использование «scan.next ()» для чтения ввода как строки (измените тип на строку)

Вы должны прочитать ввод 3 раза - очевидно;)

После этого Проверьте значение первого входа для целочисленного значения с помощью Integer.valueOf.

затем прочитайте 2 входа и разделите его с помощью .split () на каждом из этих 2-х String-Objects

переберите полученный String-Array и проверьте на целочисленность (та же процедура, что и выше)

и, наконец, но не в последнюю очередь

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