0

我制作了一个基本的 Java 程序,上面写着“hello world”

我使用javac命令编译它并使用java命令运行它,一切正常,我在 NetBeans 中制作了一个“复杂”(需要导入随机数和扫描仪才能工作)程序,导出它并使用javacCMD 中的命令编译源代码但是当我尝试运行它时,会发生这种情况:

在此处输入图像描述

仅当我尝试使用在文件中使用“导入”命令的代码时才会发生这种情况

编辑:

我尝试了“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 之外运行时不起作用

4

5 回答 5

4

Java 区分大小写。

您使用...编译了该类

javac asd.java

试图运行它使用

java Asd

这行不通。

你应该使用

java asd

根据您提供的信息...

ps-您可能想看看Java 编程语言的代码约定

于 2013-07-29T04:08:41.343 回答
1

可能是类名和java文件名不同

前任:

javac FileName.java 

现在创建 ClassName.class

 java ClassName 

运行良好。(记住区分大小写)

希望这可以帮助你

于 2013-07-29T04:27:51.503 回答
1

当您编译 .java 文件时,它会转换为相应的 .class 文件(字节码)。在您的情况下, asd.java 将在您执行时转换为 asd.class javac asd.java。现在,当您调用 java 解释器时,它将解释此字节码(.class 文件),因此您必须为 Java 解释器提供与 .class 文件相同的名称。(不需要 .class 扩展名而已java filename

所以改变你的

java Asd

java asd 
于 2013-07-29T04:30:32.357 回答
1

从外观上看,将文件和构造函数上的类名更改为以大写字母开头的名称(作为命名约定)。

另外,请记住,尽管 windows 不区分大小写,但无论平台如何,java 都是区分大小写的!始终使用区分大小写。

有关在现实世界中运行类和 java 配置的快速介绍,请参阅此页面 http://www.sidewinder11sucommanderxer.podserver.info/Linux-SidewinderPhotoColourBalancer.html

于 2013-07-29T04:13:30.760 回答
0

所有其他答案都被您令人困惑的 asd/Asd 大写字母分散了注意力,但实际问题是您尝试从哪里运行程序。因为您已将您的类放在“asd”包中,所以您应该使用其完整的包和类名称来引用它。这意味着,而不是运行

java Asd

从 .../src/asd/ 目录中,您应该将其运行为

java asd/Asd

从 .../src/ 目录。那是-package-/-class-。因此,如果您有更完整的包结构,例如 com.lucca.games.asd,那么您仍然会在“src”目录中使用“java”命令,但您的命令将是

java com/lucca/games/asd/Asd
于 2014-01-23T14:06:09.557 回答