簡體   English   中英

將 integer 從 0-10 轉換為 integer 對應的英文單詞

[英]Convert integer from 0-10 and replace with English word that corresponds to integer

在此代碼中,當輸入中出現 10 時,它會打印一個零而不是打印十。

我該如何解決這個問題?

import java.util.Scanner;

public 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);
    }
}

十是第一個“數字”,實際上是兩位數。 你先改變零和一。 首先更改十而不是處理這種情況,(或者您可以將其設為A而不是“10” - 您似乎在這里有十一個基數)。

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" };

這是因為不正確的迭代方法,你需要反向迭代。

    public class Sample {
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 = digits.length - 1; i >= 0; i--) {
        phrase = phrase.replaceAll(digits[i], alphabets[i] + "");
    }
    System.out.println(phrase);
}

}

您的問題是您處理輸入中的每個字符,可能沒有空格,而不是用空格分隔的“單詞”。

您可以通過執行String[] numbers = phrase.split(" ");將輸入拆分為單詞 ,然后創建一個新的返回字符串,其中每個數字都替換為相應的單詞。

您可能也應該使用 hashmap 而不是兩個 arrays。

解決方法:將"onezero"替換為“ten”。

演示:

import java.util.Scanner;

public class Main {

    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.replace(digits[i], alphabets[i]).replace("onezero", "ten");
        }
        System.out.println(phrase);
    }
}

示例運行:

hello10world
hellotenworld

請注意,您應該使用replace而不是與正則表達式一起使用的replaceAll

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM