在此代码中,当输入中出现10时,它将打印一个零而不是打印十。我该如何解决这个问题。
class Program{
public static void main(String[] args) {
Scanner scn = new Scanner(System.in);
String phrase = scn.nextLine();
String[] digits = {"0","1","2","3","4","5","6","7","8","9","10"};
String[] alphabets = {"zero","one","two","three","four","five","six","seven","eight","nine","ten"};
for(int i=0; i<digits.length; i++){
phrase = phrase.replaceAll(digits[i],alphabets[i]+"");
}
System.out.println(phrase);
}
}```
您的问题是您处理输入中的每个字符,可能没有空格,而不是用空格分隔的“单词”。
您可以通过执行String[] numbers = phrase.split(" ");
将输入拆分为单词,然后创建一个新的返回字符串,并用相应的单词替换每个数字。
您可能还应该使用哈希图而不是两个数组。
十是第一个“数字”,实际上是两个数字。您先更改零和一。首先更改十,以处理这种情况(或者您可以将其设为A
而不是“ 10”-您似乎在这里以11为底)。
String[] digits = { "10", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" };
String[] alphabets = { "ten", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };