在Java方法上运行循环

时间:2015-09-08 00:15:43

标签: java loops numbers boolean calculator

所以我有一个关于做一些实现方法的课程的课程。我做了这个非常简单的程序,给你一天的幸运数字。但由于某些原因,我无法让它运行两次以上。

我发布的版本没有包含循环,但我尝试了大约10种不同的方式,它只是不起作用。要么它会不断地吐出数字,要么会再次打印出欢迎线而不仅仅是"你想要另一个数字y / n"线。如果有人可以帮我弄清楚我应该如何组织它,以便循环只显示这一行:

Would you like to receive another number? y/n

然后如果用户判定为是,则介绍方法再次运行,并且该行再次显示,直到使用按下" n"

这里是代码:

import java.util.Scanner;
import java.math.BigInteger; 
import java.util.Random; 

public class MinOppgave2 {

public static void main(String[] args) {
    menu();
}

    public static void menu(){
    //intro text
    System.out.println("Welcome to lucky number of the day!");
    System.out.println("What kind of number would you like today?");
    intro();
    Scanner input = new Scanner(System.in);
    System.out.println("Would you like to receive another number? y/n");
    String txtinput = input.nextLine();
                if (txtinput.equalsIgnoreCase("y")){
            intro();
                }
            else if (txtinput.equalsIgnoreCase("n")){
                System.out.println("That's all for now, have a nice day!");
            }
    System.out.println("That's all for now, have a nice day!");
    }

    public static void intro(){
    // user choice
    Scanner input = new Scanner(System.in);
    System.out.println("Please choose between: even odd or prime");
    String text1 = input.nextLine();
    //if/else user choice arguments
    if (text1.equalsIgnoreCase("even"))
        Evennum();  
        else if (text1.equalsIgnoreCase("odd"))
            Oddnum();
        else if (text1.equalsIgnoreCase("prime"))
            Prime();
        else
            menu();
    }

    public static void Evennum(){
        // random number generator
        int num = 0;
        Random rand = new Random();
        num = rand.nextInt(1000) + 1;
        while (!isEven(num)) {          
            num = rand.nextInt(1000) + 1;
        }
        System.out.println(num);
    }

    public static void Oddnum(){
        // random number generator
        int num = 0;
        Random rand = new Random();
        num = rand.nextInt(1000) + 1;

        while (!isOdd(num)) {          
            num = rand.nextInt(1000) + 1;
        }
        System.out.println(num);
    }

    public static void Prime(){
        // random number generator
        int num = 0;
        Random rand = new Random();
        num = rand.nextInt(1000) + 1;
        while (!isPrime(num)) {          
            num = rand.nextInt(1000) + 1;
        }
        System.out.println(num); 
    }


    // prime checker
    private static boolean isPrime(int numin){
        if (numin <= 3 || numin % 2 == 0) 
            return numin == 2 || numin == 3;
        int divisor = 3;
        while ((divisor <= Math.sqrt(numin)) && (numin % divisor != 0)) 
            divisor += 2;
        //true/false prime answer
        return numin % divisor != 0;
    }

    private static boolean isEven(int numin){
        //math argument for even number
        return (numin % 2) == 0;
    }

    private static boolean isOdd(int numin){
        //math argument for even number
        return (numin % 2) == 1;
    }
}

1 个答案:

答案 0 :(得分:0)

在错误的地方错误的递归......

试试这个:

public static void intro() {
  System.out.println("Welcome to lucky number of the day!");
  System.out.println("What kind of number would you like today?");
}

public static String takeInput() {
  Scanner input = new Scanner(System.in);
  return input.nextLine();
}

public static boolean pickNumber() {
  System.out.println("Would you like to receive another number? y/n");
  if (!takeInput().equalsIgnoreCase("y")) {
    System.out.println("That's all for now, have a nice day!");
    return false;
  }

  System.out.println("Please choose between: even odd or prime");
  String chosen = takeInput();
  //if/else user choice arguments
  if (chosen.equalsIgnoreCase("even"))
    Evennum();
  else
    if (chosen.equalsIgnoreCase("odd"))
      Oddnum();
    else
      if (chosen.equalsIgnoreCase("prime"))
        Prime();

  return true;
}

public static void main(String[] args) {
  intro();
  while (pickNumber())
    ;
}