Member 13894415 Ответов: 2

Ошибка при получении пользовательского ввода(JAVA)


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

import java.util.Scanner;
public class a
{
public static void main()
{
    Scanner b = new Scanner(System.in);
    System.out.println("Enter the integer");
    int c = b.nextInt();
    System.out.println("Enter the string");
    String d = b.nextLine();
    System.out.println();
    System.out.println(" The integer you entered is" + a);
    System.out.println(" The string you entered is "+b);
    }
}


Что я уже пробовал:

При запуске программы она принимает входные данные целого числа и печатает соответственно, но не запрашивает входные данные для строки и не печатает пустую строку напрямую.

Однако если бы я полностью исключил взятие входных данных из целого числа и их печать, то моя программа правильно принимала бы входные данные строки и печатала бы их. Почему нельзя сделать и то и другое вместе?

Может кто-нибудь помочь?!

2 Ответов

Рейтинг:
2

Bryian Tan

Попробуйте добавить " b.nextLine();" сразу после int c = b.nextInt(); так что он будет читать Новый символ строки после целого числа.

import java.util.Scanner;
public class MyClass {
    public static void main(String args[]) {
       Scanner b = new Scanner(System.in);
        System.out.println("Enter the integer");
        int c = b.nextInt();
        b.nextLine();
        System.out.println("Enter the string");
        String d = b.nextLine();
        System.out.println("Enter the integer part 2");
        int e = b.nextInt();
        b.nextLine();
        System.out.println("Enter the string part 2");
        String f = b.nextLine();
        System.out.println();
        System.out.println(" The integer you entered is " + c);
        System.out.println(" The string you entered is "+d);
         System.out.println(" The integer you entered is " + e);
        System.out.println(" The string you entered is "+f);
    }
}


Ява задать строку ввода нескольких слов - переполнение стека[^]


Рейтинг:
2

Patrice T

Какую магию ты используешь ?

    int c = b.nextInt(); // you read the integer in c
...
    System.out.println(" The integer you entered is" + a); // and you print a

    String d = b.nextLine(); // you read the next line in d
...
    System.out.println(" The string you entered is "+b); // and you print b

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

Ваш код ведет себя не так, как вы ожидаете, и вы не понимаете, почему !

Существует почти универсальное решение: запускайте свой код на отладчике шаг за шагом, проверяйте переменные.
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не знает, что вы должны делать, он не находит ошибок, он просто помогает вам, показывая, что происходит. Когда код не делает того, что ожидается, вы близки к ошибке.
Чтобы увидеть, что делает ваш код: просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.
Отладчик - Википедия, свободная энциклопедия[^]
http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jdb.html[^]
https://www.jetbrains.com/idea/help/debugging-your-first-java-application.html[^]
Отладчик здесь только для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.