【问题标题】:String errors in convertor转换中的字符串错误
【发布时间】:2013-11-22 21:23:01
【问题描述】:

所以我的代码适用于某些单词但不适用于其他单词它会冲出字符串索引超出范围:-1 我想在每个元音和元音簇之前打印出 ub ex dubious 将是 dububious 或 cat loveo 将是 lubovudeo

字符串语句,设置;

        sentance = "toster iooppp";
        set= translate(sentance);
        System.out.println(set);
}
public static String translate (String sentence){

    String set = " ";
    sentence= sentence.toLowerCase();
    scan = new Scanner (sentence);

    while (scan.hasNext()) {

        set+= toUbbi (scan.next());
        set += " "; 
    }
    return  set; 
    }

 private static String toUbbi(String word ) {
    String str= word;
    String new_str="";
     for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            if (isVowel(c) && isVowel(str.charAt(i -1)) )
            { // If is a vowel
                new_str += "ub" ;
            }
            new_str += c;
        }
     return new_str;
    }


    private static boolean isVowel(char c)
    {
        if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' ){
            return true;}

        return false;    

【问题讨论】:

  • 这段代码不完整——两边都缺行。
  • 猫爱不是 lubovububeo 吗?
  • 我怀疑你的逻辑不正确,当你让它不崩溃时,你可能会发现它给了你错误的答案。我会手动完成它,看看toUbbi 是如何工作的。还要确保逻辑在边界处执行您想要的操作,即当 i 为 0 时,当它为 str.length()-1 时。

标签: java string char


【解决方案1】:

在第一次迭代中它给出了错误..

        if (isVowel(c) && isVowel(str.charAt(i -1)) )
        { // If is a vowel
            new_str += "ub" ;
        }

所以改成这样..

        if (isVowel(c))
        { // If is a vowel
            new_str += "ub" ;
        }

或者改变你的循环..

  for (int i = 1; i < str.length(); i++) {
      // yur remain code...
  }

【讨论】:

    猜你喜欢
    • 2014-02-27
    • 2021-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-02
    • 1970-01-01
    相关资源
    最近更新 更多