0%

java编码错误

跟着黑马程序员敲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)

解决方案:

  1. 将文件保存为GBK格式(不推荐):
    此时,cmd无报错,但终端运行中文出现”??????…”的情况,猜测是终端以utf-8读取文件出错,这里不予测试.

  2. cmd javac的语句加上encoding:
    (注意这个文件保存时是无BOM的utf-8,否则会出现类似” 非法字符: ‘\ufeff’”的报错):

     javac -encoding "UTF-8" ScannerTest.java
    

参考csdn文章链接

-------------已经到底啦谢谢阅读-------------