跟着黑马程序员敲javacode的时候出现了一个编译错误,这里记录一下
ScannerTest.java源代码:
import java.util.Scanner;
public class ScannerTest{
public static void main(String[] args) {
Scanner var = new Scanner(System.in);
System.out.println("输入两个数字:");
int a = var.nextInt();
int b = var.nextInt();
int c= a+b;
System.out.println(c);
var.close();
}
}
cmd javac时报错:
ScannerTest.java:1: 错误: 需要 class、interface、enum 或 record
锘縤mport java.util.Scanner;
但是vscode的终端运行无误.(已知文件名和类名相同,java环境无误(反正目前没问题) )
后来求助了大佬们,发现是这个文件保存时是utf-8编码(无BOM),而cmd读取时应该是GBK编码,导致无法正确编译.(并且有建议用IDEA写java)
解决方案:
将文件保存为GBK格式(不推荐):
此时,cmd无报错,但终端运行中文出现”??????…”的情况,猜测是终端以utf-8读取文件出错,这里不予测试.cmd javac的语句加上encoding:
(注意这个文件保存时是无BOM的utf-8,否则会出现类似” 非法字符: ‘\ufeff’”的报错):javac -encoding "UTF-8" ScannerTest.java