Как поместить ввод на следующую строку в утилите сканера Java

У меня есть основной вопрос Java о утилите сканера. Допустим, у меня есть простая программа, которая принимает пользовательский ввод и сохраняет его в переменной. Мой вопрос: когда я запускаю программу, которая запрашивает несколько входных данных, курсор начинается в начале вопроса, а не после него. Мой код:

public class question3 {

    public static void main(String[] args){

       Scanner s = new Scanner(System.in);
       System.out.println("Enter the first number:");
       Float a = s.nextFloat();
       System.out.println("Enter the second number:");
       Float b = s.nextFloat();
       System.out.println("Sum = " + (a+b));
       System.out.println("Difference = " + (a-b));
       System.out.println("Product = " + (a*b));


       }
}

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

введите здесь описание изображения

Это проблема IDE, так как с кодом все в порядке.


person VrnRap    schedule 12.09.2013    source источник
comment
Это проблема с IDE. Ваша программа выглядит идеально. Добавление \n, возможно, может сделать его лучше, но мигание курсора - это вещь IDE.   -  person VictorCreator    schedule 12.09.2013
comment
@ Виджайрам, я думаю, что да. Я не вижу никакой другой проблемы или решения. Спасибо.   -  person VrnRap    schedule 12.09.2013


Ответы (3)


Вместо println(String) перед каждым вводом измените его на print(String). Таким образом, это будет выглядеть примерно так:

public class question3{

    public static void main(String[] args){

        Scanner s = new Scanner(System.in);
        System.out.print("Enter the first number:");
        Float a = s.nextFloat();
        System.out.print("Enter the second number:");
        Float b = s.nextFloat();
        System.out.println("Sum = " + (a+b));
        System.out.println("Difference = " + (a-b));
        System.out.println("Product = " + (a*b));


    }
}

Кроме того, просто примечание: вы должны использовать правильные/соответствующие соглашения об именах для ваших переменных. Как и для вашего Scanner, вы должны называть его reader или input; что-то, что представляет его функцию. Та же идея относится и к остальным вашим переменным. Кроме того, имена классов начинаются с большой буквы.

Вот как выглядит готовый результат:

введите здесь описание изображения

person Josh M    schedule 12.09.2013
comment
делает s.nextFloat(); сделать новую строку для вас? - person ug_; 12.09.2013
comment
@ ns47731 Ну, судя по изображению (с использованием IntelliJ), так и должно быть. - person Josh M; 12.09.2013
comment
@JoshM спасибо за ваш ответ, но моя проблема, похоже, связана с миганием курсора, программа помещает число в правильное место, но на дисплее отображается мигание курсора в начале вопроса. Вы можете себе это представить? или, может быть, я должен сфотографировать его? - person VrnRap; 12.09.2013
comment
@VrnRap Я думаю, это действительно зависит от того, какую IDE вы используете. Конечно, обновите свой вопрос картинкой. Похоже, вы используете Dr. Java, и в этом случае я считаю, что вы можете просто щелкнуть туда, где обычно находится ввод, и курсор переместится туда. - person Josh M; 12.09.2013
comment
@JoshM да, он перемещается в правильное место, когда я нажимаю или набираю просто визуальную вещь. я думаю, это не имеет большого значения. - person VrnRap; 12.09.2013

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

System.out.print("Enter the first number:");
Float a = s.nextFloat();
System.out.println();
System.out.print("Enter the second number:");
Float b = s.nextFloat();
System.out.println();
person ug_    schedule 12.09.2013
comment
По сути, это та же проблема, потому что это не проблема программы. Может быть, это из-за Eclipse, я не знаю, но курсор все еще мигает в другом месте, а не там, где он должен быть. - person VrnRap; 12.09.2013

Это может сэкономить вам несколько секунд, набрав несколько строк:

System.out.print("Enter the first number:");
Float a = s.nextFloat();
System.out.print("\nEnter the second number:");
Float b = s.nextFloat();
System.out.println("\nSum = " + (a+b)
                   +"\nDifference = " + (a-b)
                   +"\nProduct = " + (a*b));
person LeandreM    schedule 12.09.2013