vs code运行Java遇到的输入问题

vs code运行Java遇到的输入问题

关于在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

步骤

  1. 导入scanner
import java.util.Scanner;
  1. 创建scanner对象
Scanner scanner = new Scanner(System.in);
  1. 使用 scanner.nextXxx()方法读取指定类型的数

nextInt()nextLine()nextDouble()

  1. 关闭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

  1. 编译javac java文件

会生成一个class文件

需要我们在终端上对应地址写

javac xxx.java

xxx就是你的文件名,然后回车

  1. 运行class文件

接着写

java xxx 输入的内容

接着回车,就可以运行了