簡體   English   中英

如何將字符串的字符與數組的索引匹配

[英]How to match the chars of a string to the index of an array

我有一個由數字組成的字符串,我想與單詞數組的內容匹配。

輸入字符串中的每個字符都與單詞數組中的位置匹配。

如果我在if語句之前打印出ij的值, if它們是正確的0 and 0 3 and 3 ,等等。但是,下面的循環永遠不會輸入if語句。 請幫助我理解原因。

String input = "0356";
String[] words = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
String[] result = new String[4];

for (int i = 0; i < input.length(); i++) {
    for (int j = 0; j < words.length; j++) {
        if (Character.toString(input.charAt(i)) == Integer.toString(j)) {
            result[i] = words[j];
        }   
    }
}

我正在尋找的結果:

result[] = {"zero","three","five","six"}

比較String時,需要使用equals()代替==

所以改變

if (Character.toString(input.charAt(i)) == Integer.toString(j))

if (Character.toString(input.charAt(i)).equals(Integer.toString(j)))

您可以將其直接轉換為整數,而不用使用String。

 if (Integer.parseInt(String.valueOf(input.charAt(i))) == j)

輸出:

jshell>     for (int i = 0; i < input.length(); i++) {
   ...>         for (int j = 0; j < words.length; j++) {
   ...>             if (Integer.parseInt(String.valueOf(input.charAt(i))) == j)
   ...>    {
   ...>                 result[i] = words[j];
   ...>             }   
   ...>         }
   ...>     }

jshell> System.out.println(Arrays.toString(result));
[zero, three, five, six]

PS:您需要注意的一件事是parseInt引發NumberFormatException,因此請確保您的輸入字符串始終具有數字(也許您可以通過正則表達式對其進行驗證)或正確地處理異常

Java 8流的替代方法可能是:

import java.util.Arrays;

public class numberToWords {

    public static void main(String args[]) {
        String input = "0356";
        String[] words = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };

        String[] result = Arrays.stream( // Convert to stream
                input.split("")) // split each number
                .map(e -> words[Integer.valueOf(e)]) // map each number to the corresponding word index
                .toArray(String[]::new); // return the resulting array

        for (String string : result) {
            System.out.println(string);
        }
    }
}

導致:

zero
three
five
six

暫無
暫無

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

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