我制作了一个基本的Java程序,上面写着“hello world”
我使用javac
命令编译它,并使用java
命令运行它,一切正常,我在NetBeans中创建了一个“复杂”(需要导入随机和扫描仪工作)程序,导出它并使用CMD中的javac
命令编译源代码但是当我尝试运行它时会发生这种情况:
只有在我尝试使用文件
中使用“import”命令的代码时才会发生这种情况编辑:
我试过“javac asd.java”和“java Asd.java”,两个都工作了然后我尝试了“java Asd”和“java asd”,没有工作,它一直给我上面的错误,代码:
package asd;
import java.util.Scanner;
import java.util.Random;
public class Asd{
public static void main(String[] args) {
Random r = new Random();
Scanner scan = new Scanner(System.in);
System.out.println("Choose a difficulty");
boolean s = true;
int v = 0;
while(true){
System.out.println("Very Easy/Easy/medium/hard/impossible/impossibler");
System.out.print("I want it to be ");
String x = scan.nextLine();
if (x.equalsIgnoreCase("very easy")){
v = 6;
break;
}
else if (x.equalsIgnoreCase("easy")){
v = 11;
break;
}
else if (x.equalsIgnoreCase("medium")){
v = 26;
break;
}
else if (x.equalsIgnoreCase("hard")){
v = 51;
break;
}
else if (x.equalsIgnoreCase("impossible")){
v = 101;
break;
}
else if (x.equalsIgnoreCase("impossibler")){
s = false;
break;
}
else {
System.out.println("invalid difficulty");
}
}
v--;
int h = 0;
int c = 0;
if(s){
System.out.println("Guess a number beween 0 and " + v);
c = r.nextInt(v);
//int i = 0;
while (true) {
String b = scan.nextLine();
int g;
try {
g = Integer.parseInt(b);
if (g < c){
System.out.println("Try higger");
}
else if (g > c){
System.out.println("Maybe less");
}
else {
break;
}
}
catch (Exception e) {
System.err.println("please use a number");
}}}
else {
System.out.println("Guess a number between 0 and 999999999");
while(true) {
c = r.nextInt();
if ((c < 0) && (c > 999999999)) {}
else {
break;
}}
while(true) {
String b = scan.nextLine();
try {
int g;
g = Integer.parseInt(b);
if (g < c){
System.out.println("Try higger");
}
else if (g > c){
System.out.println("Maybe less");
}
else {
break;
}
}catch(Exception e){
System.out.println("please use a number");
}}
}
System.out.println("YOU WIN");
System.out.print("push enter to quit");
String k = scan.nextLine();
}
}
这是我制作的一个小游戏,但不仅仅是这个代码我需要导入的东西只是在netbeans / eclipse之外运行它时不起作用
答案 0 :(得分:4)
Java区分大小写。
您使用...
编译了该类javac asd.java
尝试使用
运行它java Asd
这不起作用。
您应该使用
java asd
根据您提供的信息......
ps-您可能需要查看Code Conventions for the Java Programming Language
答案 1 :(得分:1)
从它的外观来看,将文件和构造函数上的类名更改为以大写字母开头的内容(作为命名约定)。
另外,请记住,虽然Windows不区分大小写,但无论平台如何,java都区分大小写! 始终使用区分大小写。
有关在现实世界中运行类和Java配置的快速介绍,请参阅此页面 http://www.sidewinder11sucommanderxer.podserver.info/Linux-SidewinderPhotoColourBalancer.html
答案 2 :(得分:1)
可能是类名和java文件名不同
前:
javac FileName.java
创建ClassName.class
现在,
java ClassName
运行良好。(记住区分大小写)
希望这有助于你
答案 3 :(得分:1)
编译.java文件时,它会转换为相应的.class文件(字节码)。在您的情况下,当您执行javac asd.java
时,asd.java将转换为asd.class。现在,当您调用java解释器时,它将解释此字节码(.class文件),因此您必须为Java解释器指定与.class文件相同的名称。 (不需要.class扩展名java filename
)
所以改变你的
java Asd
到
java asd
答案 4 :(得分:0)
所有其他答案都被您令人困惑的asd / Asd大写内容分散了注意力,但实际问题是您尝试运行该程序的地方。因为您已将您的类放在“asd”包中,所以您应该使用其完整的包和类名称来引用它。这意味着不是运行
java Asd
从,您应该将其作为运行
java asd/Asd
来自... / src /目录的。那是-package - / - class-。所以,如果你有一个更完整的包结构,比如com.lucca.games.asd那么你仍然会在“src”目录中使用“java”命令,但你的命令将是
java com/lucca/games/asd/Asd