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