如何修正我的计数器正确打印2被输入的次数?

h9vpoimq  于 2021-06-29  发布在  Java
关注(0)|答案(3)|浏览(374)
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 grammary error”或(“fixed 0 grammary errors”,如果没有输入“2”)。

ckx4rj1h

ckx4rj1h1#

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

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

replacell方法返回对调用此方法的string对象执行替换的次数
完全法

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;

    }
kcugc4gi

kcugc4gi2#

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;

    }

}

除了上一个答案中已经报告的错误之外,您的代码无法编译,因为您编写了一个没有if的else。

tct7dpnv

tct7dpnv3#

您只需使用charat函数,并在每次返回“2”时增加计数,它应该是这样的:

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

相关问题