我正在做的一项任务遇到了麻烦。提示如下:
创建一个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
有人可以帮我识别错误吗?我真的不知道这个程序出了什么问题,尽管它工作了几个小时。提前致谢。非常感谢所有帮助和反馈。
我会做的是,我会使用你的扫描仪将输入作为字符串,这样你就可以使用. long()来获取长度,使用. charAt()来显示它们...记住charAt就像数组一样,索引从0开始,长度不是。如果你需要它们是int,你可以使用Integer.parseInt()(在尝试之前一定要检查它是一个数字,因为它会抛出一个异常,但是使用布尔值和try catch,你可以继续要求用户输入,直到他们像这样得到正确的输入
boolean notComplete = true;
while(notComplete = true){
try{ userinput = //get input somehow
Integer.parseInt(userinput);
//do whatever
boolean complete = true;
}catch(NumberFormatException e){
//get input and repeat it will keep trying until the boolean is updated
}})
但为此,我认为只要您显示它,如何保留它并不重要。您还可以添加一个字符串数组,这些字符串具有与它们对应的索引...意思是这样的:
String[] s = {"ones", "tens", "hundreds"};
因此,当用户说1、2或3来选择应该显示的内容时,可以在字符串上减去一个call.charAt来显示数字,并在同一索引处打印数组s的索引,以告诉用户它是什么。
你有一些问题,我建议你仔细检查一下-
// 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();
}
}
编写一个方法提取tOddDigits(),从正数n中提取奇数,并将奇数顺序组合成一个新数字。新数字返回给调用方法。如果输入数字n不包含任何奇数,则返回-1。例如,如果n=1234567,则返回1357;如果n=28,则返回-1。 测试用例: 预期产出: 这是我所做的方法,但输出是 最后的输出应该是错误输入! 如何检查n是否为负数,然后转到错误输入?
本文向大家介绍java随机抽取指定范围不重复的数字,包括了java随机抽取指定范围不重复的数字的使用技巧和注意事项,需要的朋友参考一下 本文给大家介绍如何在JAVA中实现随机无重复数字的功能。如果您是初学者的话,有必要看一看这篇文章,因为这个功能一般会在面试中遇到。包括我本人在招聘人员的时候也喜欢拿这个问题去问别人,主要看一看考虑问题的模式和基础知识如何。 希望这篇文章能给初次接触的朋友一些帮助,
问题内容: 我有一个抽象类,应该实现一个公共字段,该字段是一个接口或另一个抽象类。 像这样的东西: 现在我有另一个专门的类容器: Java的让我编译这个,和我想象的领域中被自动重载领域的......这些问题是:我是对这个?孩子的自动“超载”会发生吗? 而且,更重要的问题是,如果我还有另一个这样的课: 会返回1还是2?我的意思是容器字段将称为通用字段还是特殊字段?还有,如果特殊的prop1被声明为S
本文向大家介绍java利用数组随机抽取幸运观众,包括了java利用数组随机抽取幸运观众的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了java利用数组随机抽取幸运观众的具体代码,供大家参考,具体内容如下 思想: 首先将所有观众姓名生成数组,然后获取数组元素的总数量,再在数组元素中随机抽取元素的下标,根据元素的下标得到幸运观众的名字。 效果图: 以上就是本文的全部内容,希望对大家的学习
1 介绍 词频-逆文档频率法(Term frequency-inverse document frequency,TF-IDF)是在文本挖掘中广泛使用的特征向量化方法。 它反映语料中词对文档的重要程度。假设用t表示词,d表示文档,D表示语料。词频TF(t,d)表示词t在文档d中出现的次数。文档频率DF(t,D)表示语料中出现词t的文档的个数。 如果我们仅仅用词频去衡量重要程度,这很容易过分强调
问题内容: 在Java中,不同维度的数组具有不同的类型。因此,采用作为参数的方法不能采用或。我有很多代码,在这些代码中,我创建了非常相似的方法,但是要保证数组的维数。有没有一种方法可以处理任意维数的数组,从而抽象出这种通用功能? 问题答案: 如果您愿意放弃类型安全性,则可以稍作递归(这里没有惊喜,对吗?)和反思。 想法是按照递归的方式编写方法,直到数组只有一个维为止。进入单维度级别后,请执行工作;