java - 是否可以在字符串值 Java 控制台之间创建输入扫描器?

标签 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. 首先,您的代码按其编码方式运行,而不是按预期运行。 由于您的输出是空白的,并且您想知道为什么提示还没有出现要求用户输入,那么让我告诉您一件事,它实际上要求您在那里输入一些输入。一旦您输入,您将看到输出的下一行将是..

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/

相关文章:

java - 如何在 VTD-XML 中创建/传递大量 AutoPilot 对象实例?

java - 让 List.remove(Object o) 通过 id 删除且不等于

javascript - 按钮内的 onChange 和 onClick 在 I.E 上不起作用

java - 在 Java Servlet/输入字段结构中访问 HTML 输入字段数组

c - 用 C 语言进行 Win32 API 控制台编程

c# - 将文件拖放到控制台应用程序

java - onError java.lang.NullPointerException : Attempt to invoke virtual method 'double java.lang.Double.doubleValue()' on a null object reference 错误

java - 使用 servlet 进行幻灯片放映

javascript - 仅对一个输入按钮应用禁用

c# - 错误: Package 'Microsoft.Azure.WebJobs.Extensions' is incompatible with 'all' frameworks in project '