我尝试自定义我的 Java 控制台应用程序,但是当我尝试在命令提示符中显示它时遇到问题,字符串之间会出现输入扫描仪...
int a;
Scanner scan = new Scanner(System.in);
System.out.println("Input value of a: " + (a = scan.nextInt()) + " !");
谁能解决这个问题,帮帮我...... 谢谢
最佳答案
1. 首先,您的代码按其编码方式运行,而不是按预期运行。 由于您的输出是空白的,并且您想知道为什么提示还没有出现要求用户输入,那么让我告诉您一件事,它实际上要求您在那里输入一些输入。一旦您输入,您将看到输出的下一行将是..
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
,现在打印语句实际上已完成并准备好执行。因此,您将在输入提示后看到打印输出。
希望它能让您对 Java 和编程语言有更好的了解。
祝你编码愉快:)
关于java - 是否可以在字符串值 Java 控制台之间创建输入扫描器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47260475/