这段代码在intelliJ idea上不打印任何内容,它甚至不需要用户输入或任何东西

问题描述 投票:0回答:1
import java.util.Scanner;

    public class Main {

        public static void main(String[] args) {
            Scanner scan = new Scanner(System.in);
            // Write your code here.
            // Read integer
            int integer = scan.nextInt();

            // Read double
            double doubleValue = scan.nextDouble();

            // Read string
            scan.nextLine();
            String string = scan.nextLine();

            // Print the results
            System.out.println("String: " + string);
            System.out.println("Double: " + doubleValue);
            System.out.println("Int: " + integer);
        }
    }

这是一个 hackerrank 问题,hackerrank 编译器说它是正确的。我解决了这个问题,但我想知道为什么 IntelliJ IDEA 在这段代码中没有打印任何内容(注意:我之前在 IntelliJ 中编写的所有代码都运行完美,除了这个)

java stdout stdin solution
1个回答
0
投票

当您在 Intellij IDEA 中运行该代码时,会发生以下情况:

  • Scanner
    被分配给键盘输入对应的“标准”输入流:
    Scanner scan = new Scanner(System.in);
    
  • 从输入中扫描下一个令牌,如果没有输入,扫描器将等待这种情况发生:
    int integer = scan.nextInt();
    
  • double
    string
    具有相同的行为:
    double doubleValue = scan.nextDouble();
    scan.nextLine(); // there is "empty" scan for String
    String string = scan.nextLine();
    
  • 所有扫描完成后,代码将打印结果:
    System.out.println("String: " + string);
    System.out.println("Double: " + doubleValue);
    System.out.println("Int: " + integer);
    

因此,如果您运行该程序并且不输入 4 次,您将看不到任何结果。

例如,在我的控制台中,我必须输入才能看到一些结果:

© www.soinside.com 2019 - 2024. All rights reserved.