gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 12:00:53 24 4
gpt4 key购买 nike

我尝试自定义我的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com