我正在尝试创建一个将整数值转换为单词String的方法。这是我的代码:
arraysize
我不知道如何在此之后再次调用该方法。 一个示例运行将是1234然后将转换为一个二三四。
答案 0 :(得分:2)
请注意,您不包括零,我不明白您为什么这样做:String numStr = Integer.toString(n);
您要做的是:
public static void num(int n){
String[] numbers = {"zero","one", "two", "three", "four", "five" , "six", "seven", "eight", "nine"};
if(n<10){
System.out.println(numbers[n]);
return;
}
else{
num(n/10);
System.out.println(numbers[n%10]);
}
}
您可以使用以下方法:
public static void main(String args[]){
num(1234);
}
答案 1 :(得分:1)
正如MartínMuñozdelRío指出的那样,没有将整数转换为String,因为这只会创建一串数字(即1234变成“1234”)。 if语句检查整数是否等于0也没有用,因为这不会解决其他单个数字的整数。如果n等于3或8,程序将继续进行下一步。
将每个数字的字符串表示形式存储在数组中是一个很好的第一步,但您还需要创建一个String,它将存储原始整数的完整字符串表示形式。我已创建并初始化String digitString来执行此操作。
public static void num (int n) {
String[] numbers = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
String digitString = "";
您的原始if语句有正确的想法,但它只检查单个数字整数是否为零。要解决此问题,请调整if语句以检查n是否小于10.由于递归方法需要删除已经计算过的数字,因此此调整还将确保程序在只有一位数时知道该怎么做左
public static void num (int n) {
String[] numbers = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
String digitString = "";
if (n < 10) {
digitString += numbers[n] + " ";
} else {
int digit = n%10;
digitString = numbers[digit] + " " + digitString;
num(n/10);
}
System.out.print(digitString);
}
如果n大于或等于10,则语句的else块将通过查找n / 10的余数来隔离整数的最后一位。数字被隔离后,您可以使用数字作为数字中的索引来检索字符串。将数字的字符串表示形式添加到digitString,但不要使用+ =或字符串将以相反的顺序保存数字。要在不评估相同数字的情况下再次调用循环,请将n / 10插入方法中。
此处使用System.out.print()而不是System.out.println(),以便每个字符串数字将打印在同一行。
您可以像上面显示的MartínMuñozdelRío一样调用主要方法:
public static void main(String[] args) {
num(3456);
}
希望这有用!