java用户输入菜单可以';不要选择一个选项

java用户输入菜单可以';不要选择一个选项,java,Java,我还在学校学习Java,但我正在编写一个程序,用户可以输入一个选项。1,2,3,4. 问题是我选择的选项之一oddEvenZero(选项2)并没有结束。程序不断要求用户输入整数,不显示结果,也不返回菜单。谢谢 import java.util.Scanner; public class IntFun { public static void main(String[] args) { int option; int integer; int evenCou

我还在学校学习Java,但我正在编写一个程序,用户可以输入一个选项。1,2,3,4. 问题是我选择的选项之一oddEvenZero(选项2)并没有结束。程序不断要求用户输入整数,不显示结果,也不返回菜单。谢谢

import java.util.Scanner;

public class IntFun
{
  public static void main(String[] args)
  {
     int option;
     int integer;
     int evenCount = 0, oddCount = 0, zeroCount = 0;
     int optionOne;

     Scanner kb = new Scanner(System.in);
     System.out.println("Welcome to Integer Fun.");
     System.out.println("Please enter a non-negative integer: ");
     integer = kb.nextInt();
     kb.nextLine();

     while((integer < 0))
     {
        System.out.println("I am sorry that is not a non-negative integer.");
        System.out.println("");
        System.out.println("Please enter a non-negative integer: ");
        integer = kb.nextInt();
     }

     option = displayMenu(kb);

     while (option != 4)
     {
        switch (option)
        {
           case 1:
                    System.out.println("Option 1");
              break;
           case 2:
              optionOne(integer, evenCount, oddCount, zeroCount);
              System.out.printf("Even: %d Odd: %d Zero: %d", evenCount, oddCount, zeroCount);
              break;
           case 3:
              System.out.println("Option 3");
              break;
        }
            option = displayMenu(kb);
     }
  }

  private static int displayMenu(Scanner kb)
  {
     int option = 0;
     while (option != 1 && option != 2 && option != 3 && option != 4)
     {
        System.out.println("\t\t1. Enter a new number\n\t\t2. Print the number of odd digits, even digits and zeros in the integer\n\t\t3. Print the sum of the digits of the integer\n\t\t4. Quit the program");
        option = kb.nextInt();
            kb.nextLine();
        if (!(option == 1 || option == 2 || option == 3 || option == 4))
           System.out.println("Invalid choice");
     }
     return option;
  }

  private static int optionOne(int integer, int evenCount, int oddCount, int zeroCount)
  {
  while (integer > 0)
  {
  integer = integer % 10;
  if (integer==0)
  {
     zeroCount++;
  }
  else if (integer%2==0)
  {
     evenCount++;
  }
  else
  {
     oddCount++;
  }
  }
  return integer % 10;


  }
  }
import java.util.Scanner;
公共课堂娱乐
{
公共静态void main(字符串[]args)
{
int选项;
整数;
int evenCount=0,oddCount=0,zeroCount=0;
int optionOne;
扫描仪kb=新扫描仪(System.in);
System.out.println(“欢迎来到整数乐趣”);
System.out.println(“请输入一个非负整数:”);
整数=kb.nextInt();
kb.nextLine();
而((整数<0))
{
System.out.println(“很抱歉,这不是一个非负整数。”);
System.out.println(“”);
System.out.println(“请输入一个非负整数:”);
整数=kb.nextInt();
}
选项=显示菜单(kb);
while(选项!=4)
{
开关(选件)
{
案例1:
系统输出打印项次(“选项1”);
打破
案例2:
optionOne(整数、偶数计数、奇数计数、零计数);
System.out.printf(“偶数:%d奇数:%d零:%d”,偶数计数,奇数计数,零计数);
打破
案例3:
系统输出打印项次(“选项3”);
打破
}
选项=显示菜单(kb);
}
}
专用静态int显示菜单(扫描仪kb)
{
int选项=0;
而(选项!=1&&option!=2&&option!=3&&option!=4)
{
System.out.println(“\t\t1.输入一个新数字\n\t\t2.打印整数中奇数、偶数和零的数量\n\t\t3.打印整数的位数之和\n\t\t4.退出程序”);
option=kb.nextInt();
kb.nextLine();
如果(!(选项==1 | |选项==2 | |选项==3 | |选项==4))
System.out.println(“无效选择”);
}
返回选项;
}
私有静态int optionOne(int integer、int evenCount、int oddCount、int zeroCount)
{
while(整数>0)
{
整数=整数%10;
如果(整数==0)
{
零计数++;
}
else if(整数%2==0)
{
evenCount++;
}
其他的
{
oddCount++;
}
}
返回整数%10;
}
}
在while循环中,你应该一个接一个地取大数字的数字。 将除法提示设置为10将给出您号码的最后一位数字。但是你的下一个数字应该不一样,而是这个数字除以10的整数部分。此外,传递给方法变量的函数在外部也不可用,因此如果要打印它们,请直接在方法中执行,或者以某种方式返回它们(很可能需要一些对象)。试试这个:

  private static int optionOne(int integer, int evenCount, int oddCount, int zeroCount)
  {
      int test = integer;
      int temp = test; 
      do 
      {
          test = temp % 10;
          temp = temp / 10;

          System.out.println("Current temp number: " + temp);
          System.out.println("Current test digit: " + test);
          if (test==0)
          {
             zeroCount++;
          }
          else if (test%2==0)
          {
             evenCount++;
          }
          else
          {
             oddCount++;
          }

      } while (temp > 0 );
      System.out.printf("Even: %d Odd: %d Zero: %d", evenCount, oddCount, zeroCount);
      return integer % 10; // do you really need it?
  }