是否可以在String值Java控制台之间创建输入扫描程序?

时间:2017-11-13 09:05:33

标签: java input console-application java.util.scanner

我尝试自定义我的Java控制台应用程序,但是当我尝试在命令提示符中显示它时出现问题会出现在字符串之间输入扫描程序...

int a;  
Scanner scan = new Scanner(System.in);  
System.out.println("Input value of a: " + (a = scan.nextInt()) + " !");

任何人都可以解决这个问题,帮助我...... 谢谢

1 个答案:

答案 0 :(得分:1)

1。首先,您的代码运行时编码不符合预期。 由于您的输出是空白的,并且您正在徘徊为什么提示尚未来询问用户输入,那么让我告诉您一件事,它实际上是要求您在那里输入一些输入。只要您输入,您将看到输出的下一行将是..

Input value of a: (whatEverYouEntered)

所以你的最终输出是(严格按照你的代码......)

 F:/SMK/oop>javac Main.java
 F:/SMK/oop>5 (assumed you type 5 and press enter)
 F:/SMK/oop>Input value of a: 5

2。如果您认为您的代码应打印Input value of a:行拳,然后您将输入值,那么您将需要进行如下更改。

int a;  
Scanner scan = new Scanner(System.in);
System.out.print("Input value of a: ");
a = scan.nextInt();

3。如果你真的很好奇为什么你的代码表现得那么......那就读这个......

我会说,如下所述更改您的代码,然后运行,您可能会得到一个提示,否则我会稍后解释。

public static void main(String[] s) {
    int a = 0;
    Scanner scan = new Scanner(System.in);
    System.out.println("Input value of a: " + (a = new Main().getVal()) + " !");
    System.out.println("A = " + a);
}
public int getVal(){
    System.out.println("getVal called first.");
    return 5;
}

现在看输出,它应该是。

 F:/SMK/oop>javac Main.java
 F:/SMK/oop>getVal called first.
 F:/SMK/oop>Input value of a: 5

原因是,当JVM将System.out.println("Input value of a: " + (a = new Main().getVal()) + " !");解释为单个语句时,执行它必须完整......那么它将如何完成? - >通过指定a的值。为此,它必须在打印之前调用getVal()函数,对吗?

您的代码中发生了完全相同的情况,因为您的print语句将在scan.nextInt()nextInt()的调用之后执行,并立即要求用户输入,而不会在控制台中显示任何消息。一旦提供了输入,它就会将值赋给a,现在print语句实际上已经完成并准备执行。因此,您会在输入提示符后看到打印输出。

希望它能让你对java和编程语言有所了解。

快乐编码:)