Java 如何重复整个程序直到手动终止?

Java 如何重复整个程序直到手动终止?,java,repeat,Java,Repeat,我的代码运行良好,除了我应该询问用户是否愿意退出程序的部分。这是一个简单的y/n,如果输入'n',则应触发整个程序重复,并在输入'y'时终止。我知道我需要使用while循环,但我就是不知道我需要如何在代码中编写它,以便它像预期的那样工作 import java.util.*; public class MilitaryTime { public static void main (String [] args) { Scanner in = new Sc

我的代码运行良好,除了我应该询问用户是否愿意退出程序的部分。这是一个简单的y/n,如果输入'n',则应触发整个程序重复,并在输入'y'时终止。我知道我需要使用while循环,但我就是不知道我需要如何在代码中编写它,以便它像预期的那样工作

import java.util.*;

public class MilitaryTime 

{

public static void main (String [] args)    
{

            Scanner in = new Scanner(System.in);
            int hour1, minute1, hour2, minute2;

            System.out.print("Please enter the first time: ");
            int time1 = in.nextInt();
            System.out.println();
            hour1 = time1 / 100;
            minute1 = time1 % 100;

            System.out.print("Please enter the second time: ");
            int time2 = in.nextInt();
            System.out.println();
            hour2 = time2 / 100;
            minute2 = time2 % 100;

            System.out.println("Time elapsed: " + (Math.abs(hour1 - hour2) + " Hours, " + (Math.abs(minute1 - minute2) + " Minutes \n")));

            System.out.print("Do you want to quit? (y/n): ");
            String answer = in.next();

            while (answer != "n")
            {

            }

    }

}

在此之前,请重新运行main方法

while (answer.equals("n")) // comment by drewmoore; its helpfull for strings..
{
    // you said, program should repeat if n is pressed. 
    // so, if answer is equal to n then execute the main function.
    main();
}
这将一直执行,直到用户按下其他按钮


其次,您不需要在循环时使用
。这也可以通过
来实现。

您可能应该(至少)将代码分为两种不同的方法,但我将尝试指出一种方法,以最少的更改实现您想要的:

public static void main (String [] args)    
{
    String answer = null;  // you have no answer yet...
    do {   // ... but you want to execute your stuff at least once
        Scanner in = new Scanner(System.in);
        int hour1, minute1, hour2, minute2;

        System.out.print("Please enter the first time: ");
        int time1 = in.nextInt();
        System.out.println();
        hour1 = time1 / 100;
        minute1 = time1 % 100;

        System.out.print("Please enter the second time: ");
        int time2 = in.nextInt();
        System.out.println();
        hour2 = time2 / 100;
        minute2 = time2 % 100;

        System.out.println("Time elapsed: " + (Math.abs(hour1 - hour2) + " Hours, " + (Math.abs(minute1 - minute2) + " Minutes \n")));

        System.out.print("Do you want to quit? (y/n): ");
        answer = in.next();
    } while (!answer.equalsIgnoreCase("n"));

}

^^也就是说,将
while(answer!=“n”)
更改为
while(!answer.equals(“n”)
(1)调用
main()
的代码确切位于何处?我假设您希望建议所有代码都应该用
main
以外的方法提取。(2) 由于
答案
仅在第一次迭代后可用,因此这只能通过
do…while
loop.Perfect来实现。非常感谢你!