Java彩票程序编译报错:public类与文件名不匹配问题咨询
Java彩票程序编译报错问题解答
问题本质
这不是程序逻辑问题,也不是编译器机制差异,而是你违反了Java的强制语法规范——部分工具的兼容优化让你产生了“编译器有差异”的错觉。
核心规则
Java明确规定:包含public类的源文件,文件名必须和该public类的类名完全一致(大小写敏感)。你的代码里public类是LotteryProgram,但文件名叫Main.java,直接违反了规范,所以标准javac编译器会抛出如下错误:
Main.java:5: error: class LotteryProgram is public, should be declared in a file named LotteryProgram.java public class LotteryProgram { ^ 1 error
为什么部分工具能运行?
有些IDE(比如IntelliJ IDEA)或在线编译平台做了非标准的兼容优化:它们会在编译时自动对齐文件名与public类名,或者绕过该检查,但这属于工具的特殊处理,并非Java语言本身允许的行为。
解决方案
把你的源文件重命名为LotteryProgram.java,就能在所有标准Java编译环境下正常运行。
你的程序代码
import java.util.Arrays; import java.util.Random; import java.util.Scanner; public class LotteryProgram { public static void main(String[] args) { int[] lotteryNumbers = generateLotteryNumbers(); int[] userNumbers = getUserNumbers(); int matches = countMatches(lotteryNumbers, userNumbers); System.out.println("Lottery Numbers: " + Arrays.toString(lotteryNumbers)); System.out.println("User Numbers: " + Arrays.toString(userNumbers)); System.out.println("Matches: " + matches); } public static int[] generateLotteryNumbers() { int[] lotteryNumbers = new int[5]; Random random = new Random(); for (int i = 0; i < lotteryNumbers.length; i++) { lotteryNumbers[i] = random.nextInt(10); // Generate random numbers between 0 and 9 } return lotteryNumbers; } public static int[] getUserNumbers() { int[] userNumbers = new int[5]; Scanner scanner = new Scanner(System.in); System.out.println("Enter your lottery numbers (between 0 and 9):"); for (int i = 0; i < userNumbers.length; i++) { System.out.print("Number " + (i + 1) + ": "); userNumbers[i] = scanner.nextInt(); } return userNumbers; } public static int countMatches(int[] lotteryNumbers, int[] userNumbers) { int count = 0; for (int i = 0; i < lotteryNumbers.length; i++) { if (lotteryNumbers[i] == userNumbers[i]) { count++; } } return count; } }
预期输出示例
java -cp /tmp/bViay8YpR4 LotteryProgram Enter your lottery numbers (between 0 and 9): Number 1: 2 Number 2: 8 Number 3: 5 Number 4: 6 Number 5: 7 Lottery Numbers: [6, 6, 0, 0, 5] User Numbers: [2, 8, 5, 6, 7] Matches: 0
内容的提问来源于stack exchange,提问作者Top_Cat
相关产品推荐
相关产品推荐

