Java循环从用户输入到重复过程?

时间:2022-11-29 16:14:09

I am very new to Java Programming, I have been given a task to work out from user input the easter date for a given year and then to ask if the user would like to input another year to calculate another easter date. What I don't understand is how to create a loop from the second input box ("Noch eine Berechnung? (J/N)") that repeats the entire process again. My code is this:

我是Java编程的新手,我被赋予了一个任务,即从用户输入一年中的复活节日期开始,然后询问用户是否想输入另一年来计算另一个复活节日期。我不明白的是如何从第二个输入框(“Noch eine Berechnung?(J / N)”)创建一个循环,再次重复整个过程。我的代码是这样的:

import javax.swing.JOptionPane;

public class Osterberechnung_ohne_schleife {

 public static void main(String[] args) {


  String sJahrEingabe = JOptionPane.showInputDialog("Bitte Jahr eingeben:");


  int iJahr = Integer.parseInt(sJahrEingabe);

  int iP = iJahr / 100;
  int iQ = iP / 3;
  int iR = iQ / 4;
  int iX = (15 + iP - iQ - iR) % 30;
  int iY = (iP + 4 - iR) % 7;
  int iA = iJahr % 19;
  int iB = iJahr % 4;
  int iC = iJahr % 7;
  int iD = (19 * iA + iX) % 30;
  int iE = (2 * iB + 4 * iC + 6 * iD + iY) % 7;



  if ((iD == 29) && (iE == 6)) {

   System.out.println("Ausgabe: Ostern ist am 19.April");

  } else if ((iD == 28) && (iE == 6)) {

   System.out.println("Ausgabe: Ostern ist am 18.April");

  } else if ((22 + iD + iE) <= 31) {

   System.out.println("Ausgabe: Ostern ist am " + (22 + iD + iE) + ".März");

  } else {

   System.out.println("Ausgabe: Ostern ist am " + (iD + iE - 9) + ".April");

  }

  {

   String sNochJahr = JOptionPane.showInputDialog("Noch eine Berechnung? (J/N)");

  }


 }

}

Thanks in advance for your help.

在此先感谢您的帮助。

2 个解决方案

#1


1  

Surround your code with a do...while loop and keep going as long as sNochJahr is J.

用do ... while循环包围你的代码,只要sNochJahr是J,就继续运行。

do {
...
} while (sNochJahr.equals("J"));

or while sNochJahr is not N.

或者sNochJahr不是N.

while (!sNochJahr.equals("N"));

#2


1  

Youre saving the response of the user in String sNochJahr, but not evaluating it. I would suggest something like this:

您在String sNochJahr中保存用户的响应,但不对其进行评估。我会建议这样的事情:

String sNochJahr = "J"

while (sNochJahr.equals("J")) {
      String sJahrEingabe = JOptionPane.showInputDialog("Bitte Jahr eingeben:");


    int iJahr = Integer.parseInt(sJahrEingabe);

    int iP = iJahr / 100;
    int iQ = iP / 3;
    int iR = iQ / 4;
    int iX = (15 + iP - iQ - iR)%30;
    int iY = (iP + 4 - iR)%7;
    int iA = iJahr % 19;
    int iB = iJahr % 4;
    int iC = iJahr % 7;
    int iD = (19 * iA + iX)%30;
    int iE = (2 * iB + 4 * iC + 6 * iD + iY)%7;



    if ((iD==29) && (iE==6)) {

        System.out.println("Ausgabe: Ostern ist am 19.April");

    } else if ((iD==28) && (iE==6)) {

        System.out.println("Ausgabe: Ostern ist am 18.April");

    } else if ((22 +iD + iE) <= 31) {

        System.out.println("Ausgabe: Ostern ist am " + (22 + iD + iE) + ".März");

    } else {

        System.out.println("Ausgabe: Ostern ist am " + (iD + iE - 9) + ".April");

    }

    {

    String sNochJahr = JOptionPane.showInputDialog("Noch eine Berechnung? (J/N)");

        }
}

If the user inputs "N" then, the code breaks out of the while-loop.

如果用户输入“N”,则代码中断while循环。

#1


1  

Surround your code with a do...while loop and keep going as long as sNochJahr is J.

用do ... while循环包围你的代码,只要sNochJahr是J,就继续运行。

do {
...
} while (sNochJahr.equals("J"));

or while sNochJahr is not N.

或者sNochJahr不是N.

while (!sNochJahr.equals("N"));

#2


1  

Youre saving the response of the user in String sNochJahr, but not evaluating it. I would suggest something like this:

您在String sNochJahr中保存用户的响应,但不对其进行评估。我会建议这样的事情:

String sNochJahr = "J"

while (sNochJahr.equals("J")) {
      String sJahrEingabe = JOptionPane.showInputDialog("Bitte Jahr eingeben:");


    int iJahr = Integer.parseInt(sJahrEingabe);

    int iP = iJahr / 100;
    int iQ = iP / 3;
    int iR = iQ / 4;
    int iX = (15 + iP - iQ - iR)%30;
    int iY = (iP + 4 - iR)%7;
    int iA = iJahr % 19;
    int iB = iJahr % 4;
    int iC = iJahr % 7;
    int iD = (19 * iA + iX)%30;
    int iE = (2 * iB + 4 * iC + 6 * iD + iY)%7;



    if ((iD==29) && (iE==6)) {

        System.out.println("Ausgabe: Ostern ist am 19.April");

    } else if ((iD==28) && (iE==6)) {

        System.out.println("Ausgabe: Ostern ist am 18.April");

    } else if ((22 +iD + iE) <= 31) {

        System.out.println("Ausgabe: Ostern ist am " + (22 + iD + iE) + ".März");

    } else {

        System.out.println("Ausgabe: Ostern ist am " + (iD + iE - 9) + ".April");

    }

    {

    String sNochJahr = JOptionPane.showInputDialog("Noch eine Berechnung? (J/N)");

        }
}

If the user inputs "N" then, the code breaks out of the while-loop.

如果用户输入“N”,则代码中断while循环。