关于在vs code中运行Java无法输入
鸣谢我的室友徐同学和亲爱的元宝同学还有ChatGPT老师
为什么
code runner内置的编译逻辑是直接运行你的代码,但是java的独特输入方式正好与其不同,导致直接默认输入为空
public class Sqrt{public static void main(String[] args) {double EPS = 1E-15;double c = Double.parseDouble(args[0]);double t = c;while (Math.abs(t-c/t) > t*EPS){t = (c/t + t)/2.0;}System.out.println(t);}
}
以上是我的代码,但是会造成一些情况
代码本身是没有问题的,只是因为
code runner 无法运行命令行参数(运行时通过终端传递)
这是最基础的输入方式,通过 main
方法的 String[] args
数组接收运行时传递的参数
解决
方法一
使用scanner
步骤
- 导入scanner
import java.util.Scanner;
- 创建scanner对象
Scanner scanner = new Scanner(System.in);
- 使用
scanner.nextXxx()
方法读取指定类型的数
如 nextInt()
、nextLine()
、nextDouble()
等
- 关闭scanner
scanner.close();
代码
import java.util.Scanner;public class Sqrtscanner {public static void main(String[] args) {double EPS = 1E-15;Scanner scanner = new Scanner(System.in);System.out.print("请输入一个正数: ");double c = scanner.nextDouble();scanner.close();double t = c;while (Math.abs(t - c / t) > t * EPS) {t = (c / t + t) / 2.0;}System.out.println("平方根近似值: " + t);}
}
方法二
BufferedReader类(高效读取)
这种方法以主包现在的理解能力还是难以搞懂,等主包学会了会再写一篇博客专门介绍
方法三
不知道叫什么,好像是在终端上运行而不是用code runner
- 编译javac java文件
会生成一个class文件
需要我们在终端上对应地址写
javac xxx.java
xxx就是你的文件名,然后回车
- 运行class文件
接着写
java xxx 输入的内容
接着回车,就可以运行了