Сканер перестает работать и возникают проблемы с печатью. Почему?

Я использую eclipse для этого проекта. Я пытался скомпилировать в командной строке, но возникают те же проблемы. Сканер работает, пока я не доберусь до «телефона», а затем он просто пропускает пользовательский ввод и печатает все остальное в той же строке.

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

Я добавил sc.close;, чтобы посмотреть, поможет ли это, но это не помогло. Некоторая помощь будет принята с благодарностью. Также моя переменная «адрес» не полностью распечатана. Я думаю, что могу неправильно использовать сканер?

import java.util.Scanner; 

открытый класс ContactDisplay {

public static void main(String[] args) {

    //Write a program that displays your name, address, and telephone number;
    //create scanner
    Scanner sc = new Scanner(System.in);
    //Creates the variables; 
    String name; 
    String address; 
    String phone; 

    //Asks for name
    System.out.print("What is your name? ");
    //stores the name
    name = sc.next(); 
    //Asks and stores the address
    System.out.print("What is your address? ");
    address = sc.next(); 
    //Asks and stores the phone number 
    //PROBLEM IS BELOW
    System.out.print("What is your phone number? ");
    phone = sc.next(); 


    //Prints everything out
    System.out.println(name);
    System.out.println(address);
    System.out.println(phone);

}

}

Вот скриншот: Скриншот


person Johnny Meza    schedule 29.03.2015    source источник
comment
вы получаете какую-либо ошибку?   -  person Kick Buttowski    schedule 29.03.2015
comment
Никаких ошибок, он просто завершается.   -  person Johnny Meza    schedule 29.03.2015


Ответы (1)


Вы должны использовать 'sc.nextLine()' для сканирования строковых значений, и вы должны использовать 'sc.nextInt' для сканирования целочисленных значений. Если вы нажмете клавиши ctrl и пробел при наборе кода, он покажет вам возможные вещи, которые вы, возможно, захотите написать.

person phantom    schedule 29.03.2015
comment
Ты гений! Я бы проголосовал за ваш ответ, но у меня пока недостаточно репутации. Вы случайно не знаете, почему sc.next() не работает, а sc.nextLine() работает? Результат был возвращен, как и ожидалось. i.imgur.com/8QiLNp6.png - person Johnny Meza; 29.03.2015
comment
потому что вы ввели свои переменные как строку, и если вы хотите сканировать строковые переменные, вы должны использовать сканер (который вы назвали ранее).nextLine(); - person phantom; 29.03.2015
comment
Понятно, спасибо. Если бы здесь была платформа для обмена Reddcoin, я бы дал вам немного Reddcoin. - person Johnny Meza; 29.03.2015
comment
Вы можете задать мне свои вопросы, когда захотите, я рад ответить на ваши вопросы :) - person phantom; 29.03.2015
comment
@JohnnyMeza, так как это может быть еще один способ реализовать ваш код, но не отвечает, почему вы вообще занимаетесь такой проблемой? - person Kick Buttowski; 30.03.2015
comment
@JohnnyMeza: Также проверьте; stackoverflow.com/questions/5784540/ - person phantom; 30.03.2015