我正在处理我正在处理的作业。这是提示:

创建一个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();
  }
}

10-04 14:37