java - 当我的代码运行时,我似乎得到一个空值

标签 java arrays string

import java.util.StringTokenizer;

public class PigLatins {    
    String str1;
    int vowelIndex;
    String[] vowels = {"a","e","i","o","u","A","E","I","O","U"};
    String  counter = "";

    public String pigLatin(String str) {
        String[] result = str.split("\\s");

         for (int x=0; x<result.length; x++) {
                for(int i = 0;i<vowels[i].length();i++) {               
                    if(!result[x].contains(vowels[i])) {
                        str1 = result[x]+"ay";
                    }                       
                    else if(result[x].startsWith(vowels[i])) {
                        str1 = result[x]+"ay";
                    }
                    for(int j = 0;j<result[x].length();j++) 
                        if(Character.toString(result[x].charAt(j)) == vowels[i]) {
                            vowelIndex = j;
                            break;
                        }

                    if(vowelIndex > 0 && !result[x].startsWith(vowels[i]) &&     result[x].contains(vowels[i])) {
                        str1 = result[x].substring(1,vowelIndex) +        result[x].substring(0,1) + "ay";
                        }                           
                }       
            counter+=str1;  
         }       
         return counter;             
    }

}

在这部分result[x].substring(1,vowelIndex)在 if 语句中,它似乎返回 null,为什么这是错误的,我该如何修复它? (我删除了驱动程序类,因为 stackoverflow 告诉我我的代码太多了)

最佳答案

你应该改变:

for(int i = 0;i<vowels[i].length();i++)

for(int i = 0;i<vowels.length;i++)

因为您想迭代数组中的所有元音。

vowels[i].length() 总是给你 1,因为它是元音数组中第 i 个字符串的长度。

除此之外,将元音数组从 String[] 更改为 char[] 更有意义。

关于java - 当我的代码运行时,我似乎得到一个空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26710082/

相关文章:

更改字符串的大小写

php - Php 中另一个数组中的数组

jquery - 获取href值,存储在变量中并删除http ://

java - Hibernate 搜索突出显示未分析的字段

python:如何将列表转换为 c_byte 数组

java - sonarQube 执行失败,错误代码为 "Error during SonarQube Scanner execution"

Python here 文档在顶部和底部没有换行符

python - 将字符串导入为有序字典

java - 如何使用 appium 自动化/测试 Android 混合应用程序?

Java如何查看一个String是否包含多个单词?