-1

我是 Java 和一般编程的新手。

在我的程序中,我使用 if 语句来读取特定的用户输入。但是,当我输入代码“75832”时,它会像输入“24231”一样处理它。此外,如果我输入了这些数字以外的任何内容,它会像输入“24231”一样处理它。我以前做过一些类似的其他基本程序,但我不知道我做错了什么或做错了什么。

有什么帮助吗?

static void gateMethod() throws InterruptedException
{

String stageCode;
int randomChunk;

Random generator = new Random();
Scanner input = new Scanner (System.in);

randomChunk = generator.nextInt(6);
System.out.println("Welcome to Datahub v.1");
System.out.println("\rEnter a phrase or number: ");
stageCode = input.nextLine();

if (stageCode.equals("24231"));
{
    if(randomChunk == 0)
    {
        System.out.println("Data Chunk found! Please wait...");
        Thread.sleep(2000);
        System.out.println("Chunk 1/6:");
        System.out.println("text");
        Thread.sleep(2000);
        System.out.println("");
        gateMethod();

    }
    else if(randomChunk == 1)
    {
        System.out.println("Data Chunk found! Please wait...");
        Thread.sleep(2000);
        System.out.println("Chunk 2/6;");
        System.out.println("text");
        Thread.sleep(2000);
        System.out.println("");
        gateMethod();

    }
    else if(randomChunk == 2)
    {
        System.out.println("Data Chunk found! Please wait...");
        Thread.sleep(2000);
        System.out.println("Chunk 3/6:");
        System.out.println("text");
        Thread.sleep(2000);
        System.out.println("");
        gateMethod();
    }
    else if(randomChunk == 3)
    {
        System.out.println("Data Chunk found! Please wait...");
        Thread.sleep(2000);
        System.out.println("Chunk 4/6:");
        System.out.println("text");
        Thread.sleep(2000);
        System.out.println("");
        gateMethod();   
    }
    else if(randomChunk == 4)
    {
        System.out.println("Data Chunk found! Please wait...");
        Thread.sleep(2000);
        System.out.println("Chunk 5/6:");
        System.out.println("text");
        Thread.sleep(2000);
        System.out.println("");
        gateMethod();   
    }
    else if(randomChunk == 5)
    {
        System.out.println("Data Chunk found! Please wait...");
        Thread.sleep(2000);
        System.out.println("Chunk 6/6:");
        System.out.println("text");
        Thread.sleep(2000);
        System.out.println("");
        gateMethod();   
    }
}
if (stageCode.equals("75832"));
{
    System.out.println("");
    System.out.println("Data correct! Please wait...");
    Thread.sleep(2000);
    System.out.println("text");
    System.out.println("more text");
}   

}

4

1 回答 1

4

删除此行末尾的分号:

if (stageCode.equals("24231"));

从这一行开始:

if (stageCode.equals("75832"));

Java 会将分号视为if此处条件的整个主体。然后它后面的大括号中的块将始终被执行,因为它没有if像您预期的那样附加到条件。

于 2013-07-23T23:53:55.383 回答