我正在处理我正在处理的作业。这是提示:
创建一个DigitExtractor应用程序,该应用程序提示用户输入整数(范围:0-999),然后显示该数字的一位,十位或几百位。用户将从菜单中选择他们希望显示的数字。
该程序需要作为一个类编写。菜单将是您与课程一起提交的驱动程序,以便您的讲师可以使用它来测试课程。
这是我的代码:
import java.io.*;
import java.util.*;
public class TestingMenu
{
public int number;
public int units;
public int tens;
public int hundreds;
public TestingMenu(int input)
{
number = input;
units = number%10;
tens = number%10;
hundreds = number%10;
}
public int return_units()
{
return units;
}
public int return_tens()
{
return tens;
}
public int return_hundreds()
{
return hundreds;
}
public static void main(String[] args)
{
Scanner kbReader = new Scanner(System.in);
TestingMenu num;
int choice;
int input;
do
{
System.out.print("Enter a number(0-999): ");
input = kbReader.nextInt();
System.out.println("");
System.out.println("Options");
System.out.println("1) Units");
System.out.println("2) Tens");
System.out.println("3) Hundreds");
System.out.println("4) Quit");
num = new TestingMenu(input);
System.out.print("Enter your choice: ");
choice = kbReader.nextInt();
switch(choice)
{
case 1:
System.out.println("The units digit is: " + num.return_units());
break;
case 2:
System.out.println("The tens digit is: " + num.return_tens());
break;
case 3: System.out.println("The hundreds digit is: " + num.return_hundreds());
break;
case 4:
System.exit(4);
break;
default:
System.out.print("Invalid. Select a number from the given options.");
choice = kbReader.nextInt();
}
}
while(choice != 4);
}
}
我想我差不多了,但是每当测试它时,我都会遇到问题。当输入数字(例如987)并运行1-3中的所有选项时,十,几百和几百总是保持7。 4退出程序并可以正常运行,但是我已经对此进行了无数次测试。总体而言,它似乎只打印最后一位。
输入一个数字(0-999):987
选件
1)单位
2)十
3)数百
4)退出
输入您的选择:1
单位数字是:7
输入一个数字(0-999):987
选件
1)单位
2)十
3)数百
4)退出
输入您的选择:2
十位数是:7
输入一个数字(0-999):987
选件
1)单位
2)十
3)数百
4)退出
输入您的选择:3
百位数是:7
输入一个数字(0-999):987
选件
1)单位
2)十
3)数百
4)退出
输入您的选择:4
有人可以帮助我确定错误吗?尽管工作了几个小时,但我真的不知道该程序出了什么问题。提前致谢。非常感谢所有帮助和反馈。
最佳答案
您遇到了一些问题,建议您仔细检查一下-
// Why make them public?
private int units = 0;
private int tens = 0;
private int hundreds = 0;
public TestingMenu(int input) {
// Convert it to a String.
String str = String.valueOf(input);
if (str.length() == 1) {
// ones and only ones.
units = Integer.parseInt(str);
} else if (str.length() == 2) {
// tens and ones.
tens = Integer.parseInt(str.substring(0, 1));
units = Integer.parseInt(str.substring(1, 2));
} else if (str.length() == 3) {
// hundreds, tens and ones.
hundreds = Integer.parseInt(str.substring(0, 1));
tens = Integer.parseInt(str.substring(1, 2));
units = Integer.parseInt(str.substring(2, 3));
}
}
// Just use get, PLEASE!
public int getUnits() {
return units;
}
public int getTens() {
return tens;
}
public int getHundreds() {
return hundreds;
}
public static void main(String[] args) {
Scanner kbReader = new Scanner(System.in);
try {
TestingMenu num;
int choice;
do {
System.out.print("Enter a number(0-999): ");
num = new TestingMenu(kbReader.nextInt());
System.out.println("");
System.out.println("Options");
System.out.println("1) Units");
System.out.println("2) Tens");
System.out.println("3) Hundreds");
System.out.println("4) Quit");
System.out.print("Enter your choice: ");
choice = kbReader.nextInt();
if (choice == 1) {
System.out.println("The units digit is: "
+ num.getUnits());
} else if (choice == 2) {
System.out.println("The tens digit is: "
+ num.getTens());
} else if (choice == 3) {
System.out.println("The hundreds digit is: "
+ num.getHundreds());
} else if (choice != 4) {
// We want 4 to fall through and terminate the loop.
System.out.print("Invalid. Select a number "
+ "from the given options.");
choice = kbReader.nextInt();
}
} while (choice != 4);
} finally {
// close the Scanner.
kbReader.close();
}
}