0
import java.util.Scanner;

public class Solution {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int i = scan.nextInt();
        double d= scan.nextDouble();
        String a= scan.next();
        // Write your code here.

        System.out.println("String: " + a);
        System.out.println("Double: " + d);
        System.out.println("Int: " + i);
    }
}
Jon Skeet
  • 1,261,211
  • 792
  • 8,724
  • 8,929
  • 2
    So what exactly is happening? What are you typing, and what's the result? – Jon Skeet Aug 01 '19 at 13:42
  • 1
    (I ran your code entering "10 10.5 foo" and then hitting return, and it was fine...) – Jon Skeet Aug 01 '19 at 13:44
  • Please clarify the problem, I [cannot reproduce it](https://ideone.com/Xppp3L). Make sure your code is properly saved and compiled. Make sure the console is large enough to see all the text. – TiiJ7 Aug 01 '19 at 13:56
  • 1
    @Butiri Dan That happens when you use `scan.nextLine()` which consumes a line terminator, not `scan.next()` which does not. This code works completely fine running it in all new lines or running it all in one line. – Nexevis Aug 01 '19 at 14:00

1 Answers1

0

nextDouble() does not consume the new line itself so the next token returned will be an empty string. Thus, you need to follow it with a scan.nextLine().

public static void main(String[] args) {

    Scanner scan = new Scanner(System.in);

    System.out.print("Insert an int: ");
    int i = scan.nextInt();

    System.out.print("Insert a double: ");
    double d = scan.nextDouble();
    scan.nextLine();

    System.out.print("Insert a string: ");
    String a = scan.nextLine();

    System.out.println("Inserted string: " + a);
    System.out.println("Inserted double: " + d);
    System.out.println("Inserted int: " + i);
}

and the output is:

Insert an int: 45
Insert a double: 7.7452
Insert a string: Hello World

Inserted string: Hello World
Inserted double: 7.7452
Inserted int: 45
bart
  • 953
  • 9
  • 23