【问题标题】:How to create a loop for如何创建一个循环
【发布时间】:2017-04-05 08:58:31
【问题描述】:

我需要创建一个循环,在每个辅音后添加“o”

【问题讨论】:

  • 提示:20代表什么?
  • 他想查看他的辅音列表,但他没有考虑到他的字符串中有小写和大写字母!

标签: java arrays loops for-loop char


【解决方案1】:

我将引导您完成我在您的代码中更正和更改的内容以使其正常工作,以便您快速轻松地理解为什么您的代码不起作用以及为什么我的答案可以修复它。

您犯的错误是基本错误,坦率地说,如果您使用调试器逐步引导您了解代码的工作方式,那么您自己纠正这些错误应该不会太费劲。您应该了解如何使用调试器(例如 Eclipse 中使用的调试器,希望您使用 IDE 让您的生活更轻松)。

首先,当您在代码中查找辅音时,由于您的条件for(int x = 0; x<20; x++),您只需要遍历其中的一半,因为您的字符串包含辅音长度为 40 个字符。这意味着您缺少像字母 s 这样的辅音。

那么你就是根据你的瑞典语游戏找到的辅音。但是您永远不会处理不属于这些已找到辅音的字符。你应该做一个案例来处理这些“非辅音”字母,它们可能是元音或任何类型的字符(如标点符号等)。我在这里使用一个简单的布尔值来解决这个问题。

请记住,我的目标是尽可能少地更改您的代码,因此我选择添加一个布尔值来处理您的情况(检查是否存在辅音)。显然,还有许多其他方法可以实现您正在尝试做的事情。

以下是您应该添加到代码中的更改:

    /*This comes after your print "På rövarspråk:"*/
    boolean isConsonant = false; //Boolean to check wether there is a consonant or not
    for(int i = 0; i<length; i++) {
        //You didn't go through the whole consonants list you made with your prevision condition
        for(int x = 0; x<consonants.length; x++){
            if(array[i] == consonants[x])
            {
                isConsonant = true; //Set the boolean accordingly
                String add = array[i]+"o"+array[i];
                slang = slang + add;
                break;
            }
        }
        if(!isConsonant){ //If we don't have a consonant, add the char to the result string
            slang += array[i];
        }
        isConsonant = false; //Reset the boolean for the next character
    }
    /*Here you can print the result (slang) if you want, as you did*/

【讨论】:

    【解决方案2】:

    所以想法是复制辅音并在它们之间加上“o”,就像 t 变成 tot,s 变成 sos。人声只是被复制的。因此,您需要一种方法来告诉您给定的字符是声母还是辅音,以便您做出决定。

    public static boolean isConsonant(char inputChar){
    
        final String consonantsx = "bBcCdDfFgGhHjJkKlLmMnNpPqQrRsStTvVwWxXzZ"; 
        char consonants[] = consonantsx.toCharArray(); // String to charr
    
        for(int i=0; i < consonants.length;i++){
            if(inputChar == consonants[i]){ //note that in Strings u use the equals method instead of "=="
                return true;
            }
        }
    
        return false;
    }
    

    给定这个方法,你可以在“翻译方法”中使用它。

        public String rovarSpraket(String normalString) {
    
        char[] array = normalString.toCharArray(); // Input to a char array
    
        System.out.println("På rövarspråk:");
    
        String slang = "";
    
        for (int i = 0; i < normalString.length(); i++) {
    
            String add = "" + array[i];
    
            if(Goran.isConsonant(array[i])){
    
                add += "o" + array[i];
    
            }
    
            slang += add;
    
            }
    
        return slang;
    }
    

    这会像维基百科文章 https://en.wikipedia.org/wiki/R%C3%B6varspr%C3%A5ket 中的那样将顽固翻译成 sostotubobboborornon。

    【讨论】:

    • 根据我之前的代码和另一个问题的帮助,这个真的很完美。我只是想到了一件事“ if(inputChar == consonants[i]){ //注意在字符串中你使用equals方法而不是“==”你在代码中使用了==但是你说使用equals代替?
    • 是的,如果要比较一个字符串,您将使用 equals(如 String1.equals(String2))。在示例中,比较了字符,因此使用了“Char1 == Char2”。我只是想指出这一点,因为出错是很常见的事情。
    猜你喜欢
    • 1970-01-01
    • 2022-07-12
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多