Тестовое консольное приложение: вывод введенных данных

mygedz

Администратор
Сообщения
567
Оценка реакций
54
Тут я написал на С#. Но так ка мы изучаем Java, то нужно и писать на Java.
Java:
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);

        System.out.println("Привет! Ответь на вопросы.");

        System.out.print("Твое имя? ");
        String first_name = in.nextLine();

        System.out.print("Твоя фамилия? ");
        String last_name = in.nextLine();

        System.out.print("Сколько тебе лет? ");
        int age = in.nextInt();
        in.nextLine();

        System.out.print("Откуда ты? ");
        String from = in.nextLine();

        System.out.print("Кем ты работаешь? ");
        String work = in.nextLine();

        System.out.println("А теперь я выведу всю информацию о тебе.");


        System.out.print("\033[H\033[2J");
        System.out.flush();


        System.out.println("Твое имя: " + first_name);
        System.out.println("Твоя фамилия: " + last_name);
        System.out.println("Тебе: " + age + " лет");
        System.out.println("Ты из: " + from);
        System.out.println("Твоя профессия: " + work);

    }
}
Столкнулся со странным моментом, а именно строками:
Java:
System.out.print("Сколько тебе лет? ");
        int age = in.nextInt();
        in.nextLine();
Изначально, код выглядел так:
Java:
System.out.print("Сколько тебе лет? ");
        int age = in.nextInt();
т.е. шел вывод Сколько тебе лет? на консоль и записи введенных данных в переменную age. А дальше уже должен был появиться следующий вывод Откуда ты?.
Но на деле выходило: Сколько тебе лет? Откуда ты?
Начал искать решение в интернете. Нашел:cool::
Проблема задавалась и была решена на enSO.
Когда вы вводите с клавиатуры число и жмёте на Enter, то Enter добавляет \n в конец. Проблема в том, что метод Scanner#nextInt не возвращает остаток строки \n, а считывает только число. Когда вы задаёте Scanner#nextLine, то он считывает этот самый остаток строки - \n, а следующий nextLine() уже считает уже именно следующую строку, которую вы хотите получить.
Поэтому я добавил еще один in.nextLine();.
 

pisikot

Пользователь
Сообщения
70
Оценка реакций
49
немного графики)

Java:
import javax.swing.*;

public class WhatIsYourName {
    public static void main(String[] args) {
        String name;
        name = JOptionPane.showInputDialog("Как тебя зовут?");
        JOptionPane.showMessageDialog(null, "Привет, " + name + "!");
    }
}
 
Верх Низ