[英]How to match the chars of a string to the index of an array
我有一個由數字組成的字符串,我想與單詞數組的內容匹配。
輸入字符串中的每個字符都與單詞數組中的位置匹配。
如果我在if
語句之前打印出i
和j
的值, 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.