【问题标题】:how to fix my counter to correctly print the number of times 2 is inputted?如何修复我的计数器以正确打印输入 2 的次数?
【发布时间】:2021-04-09 17:02:33
【问题描述】:
import java.util.Scanner;
public class Grammar
{
    public static void main(String[] args)
    {
        // Ask the user to enter a sentence that uses the word 2 instead of to.
        String theText= "";
        System.out.println("Enter a sentence that uses the word 2 instead of to");
        Scanner input = new Scanner(System.in);
        theText = input.nextLine();
        // Call the method useProperGrammar to process the string according to 
        // the directions.
        System.out.println(useProperGrammar(theText));
        
    }
    
public static String useProperGrammar(String theText)
    {
        String newString="";
        int count = 0;
        for(int i = 0; i < theText.length(); i++)
        {
        count++;
             if (theText.contains("2"))
            {
            String character = theText.substring(i, i+1);
            newString= theText.replace("2","to");
            System.out.println("Fixed "+ count +" grammatical errors:");
            return newString;
            }
            else
            {
                System.out.println("Fixed 0 grammatical errors");
                return theText;
            }
        }
        
        return newString;
       
    }

}

基本上,我正在尝试计算用户输入“2”并被替换为的次数 'to' 但无论我输入多少个 2,它总是输出 'Fixed 1 grammatical error' 或('fixed 0 grammatical errors' 如果没有输入 '2')。

【问题讨论】:

  • String.replace 用指定的文字替换替换与文字目标序列匹配的字符串的每个子字符串——因此replace 仅被调用一次,所有2 都被替换为to .

标签: java count iteration counter


【解决方案1】:
import java.util.Scanner;
public class Grammar {
    public static void main(String[] args){
        // Ask the user to enter a sentence that uses the word 2 instead of to.
        String theText= "";
        System.out.println("Enter a sentence that uses the word 2 instead of to");
        Scanner input = new Scanner(System.in);
        theText = input.nextLine();
        // Call the method useProperGrammar to process the string according to 
        // the directions.
        System.out.println(useProperGrammar(theText));     
    }
    
    public static String useProperGrammar(String theText){
        String newString="";
        int count = 0;
        for(int i = 0; i < theText.length(); i++){
             while (theText.contains("2")){
            count = theText.length() - theText.replaceAll("2","").length();
            String character = theText.substring(i, i+1);
            newString= theText.replace("2","to");
            System.out.println("Fixed "+ count +" grammatical errors:");
            return newString;
            }
        
                System.out.println("Fixed 0 grammatical errors");
                return theText;    
        }
        
        return newString;
       
    }

}

除了上一个答案已经报错之外,你的代码无法编译,因为你写了一个没有ifelse

【讨论】:

  • 你可以去掉count++,不再需要了
【解决方案2】:

您可以简单地使用 charAt 函数并在每次返回“2”时增加计数, 它应该是这样的:

int count = 0;
String text = "your text 222";
for(int i = 0; i <= text.length(); i++){
    if(text.charAt(i) == 2){
    count++;
    }
}

【讨论】:

    【解决方案3】:

    你需要像下面这样计算长度

    int count = theText.length() - theText.replaceAll("2","").length();
    

    replacell 方法返回在调用此方法的字符串对象上完成替换的次数

    完整的方法

    public static String useProperGrammar(String theText)
        {
            String newString="";
            for(int i = 0; i < theText.length(); i++)
            {
           
                 if (theText.contains("2"))
                {
                int count = theText.length() - theText.replaceAll("2","").length();
                String character = theText.substring(i, i+1);
                newString= theText.replace("2","to");
                System.out.println("Fixed "+ count +" grammatical errors:");
                
                return newString;
                }
                else
                {
                    System.out.println("Fixed 0 grammatical errors");
                    return theText;
                }
            }
            
            return newString;
           
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多