如何使用带有while循环的方法

时间:2017-07-21 05:19:44

标签: java

我想在输入奇数时得到输出(例如3)它将输出' 3'如果我输入偶数,它将打印错误的输入'。 我知道我可以使用if else但我想使用 while循环来获取它。 我是编程的初学者,所以如果有人能帮助我,我将不胜感激

这是我的代码。当我运行它时出现错误。

import java.util.Scanner;

public class UserInput {

public static void main(String[] args) {

    int num;
    num = readOddNum();
    System.out.println("The odd integer is" + num);

}
public static int readOddNum() {
    int num = 0;

    Scanner sc = new Scanner(System.in);
    System.out.print("Enter an odd number: ");
    int num1 = sc.nextInt();
    sc.close();

    while ((num < 0) &&(num % 2 == 0)) {
        System.out.println("Wrong input!");

   }
    return readOddNum();
}
}

3 个答案:

答案 0 :(得分:0)

您应该将代码更改为

public static int readOddNum() {

  Scanner sc = new Scanner(System.in);
  System.out.print("Enter an odd number: ");
  int num1 = sc.nextInt();

  while ((num1 < 0) || (num1 % 2 == 0)) {
    System.out.println("Wrong input! - try again");
    num1 = sc.nextInt();

  }
  sc.close();
  return num1;


}

答案 1 :(得分:0)

将readOddNum逻辑更改为此..

public static int readOddNum() {
    int num;

    Scanner sc = new Scanner(System.in);
    num = readNumber(sc);

    while ((num < 0) || (num % 2 == 0)) {
        System.out.println("Wrong input!");
        num = readNumber(sc);
    }

    sc.close();

    return num;
}

public static int readNumber(Scanner sc){
    System.out.print("Enter an odd number: ");
    return sc.nextInt();
}

答案 2 :(得分:0)

可以按以下方式重写代码

import java.util.Scanner;

public class UserInput
{

public static void main(String[] args)
{

    //int num;
    readOddNum();
    //System.out.println("The odd integer is" + num);

}
public static void readOddNum()
{
    int num = 0;

    Scanner sc = new Scanner(System.in);
    System.out.print("Enter an odd number: ");
    int num1 = sc.nextInt();
    sc.close();

    while ((num1 < 0) ||(num1 % 2 == 0))
    {
        System.out.println("Wrong input!");
    break;

   }
System.out.println("The odd integer is" + num1);

   // return readOddNum();
}
}

正如您所看到的,我直接调用了方法readOddNum();并将其定义为void而不是早期版本。另外,请注意while循环中的更改。您正在使用num初始化0并在while循环中使用它,而循环应该在num1上运行,这是实际的用户输入,而不是num。 接下来你使用&&(逻辑AND)代替||(逻辑OR),两者显然有不同的含义。 &&意味着即使用户输入2之类的偶数,它也应该小于0,但事实并非如此。所以你需要使用||。此外,一旦打印语句,您将需要使用break来停止循环,否则它将继续无限执行,因为没有其他停止条件。请记住,if else已经为这样的场景创建,您必须在两种或更多场景之间进行选择,并且只执行一次,因此while循环将起作用,但它也将执行print语句,从而声明wrong inputodd number。这是你得到的输出

C:\Java\jdk1.8.0_141\bin>java UserInput
Enter an odd number: 3
The odd integer is3

C:\Java\jdk1.8.0_141\bin>java UserInput
Enter an odd number: 2
Wrong input!
The odd integer is2

希望你理解这个概念。感谢它,如果你喜欢它。谢谢。