如何修复我的计数器以正确打印输入 2 的次数?
how to fix my counter to correctly print the number of times 2 is inputted?
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”并被替换为“2”的次数
'to' 但它总是输出 'Fixed 1 grammatical error' 或('fixed 0 grammatical errors' 如果没有输入 '2')无论我输入了多少个 2。
你需要像下面这样计算长度
int count = theText.length() - theText.replaceAll("2","").length();
replacell 方法returns对调用此方法的字符串对象进行替换的次数
完整方法
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;
}
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;
}
}
除了之前回答中已经报错,你的代码无法编译,因为你写了一个else,没有if.
您可以简单地使用 charAt 函数并在每次 returns 为“2”时增加计数,
它应该是这样的:
int count = 0;
String text = "your text 222";
for(int i = 0; i <= text.length(); i++){
if(text.charAt(i) == 2){
count++;
}
}
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”并被替换为“2”的次数 'to' 但它总是输出 'Fixed 1 grammatical error' 或('fixed 0 grammatical errors' 如果没有输入 '2')无论我输入了多少个 2。
你需要像下面这样计算长度
int count = theText.length() - theText.replaceAll("2","").length();
replacell 方法returns对调用此方法的字符串对象进行替换的次数
完整方法
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;
}
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;
}
}
除了之前回答中已经报错,你的代码无法编译,因为你写了一个else,没有if.
您可以简单地使用 charAt 函数并在每次 returns 为“2”时增加计数, 它应该是这样的:
int count = 0;
String text = "your text 222";
for(int i = 0; i <= text.length(); i++){
if(text.charAt(i) == 2){
count++;
}
}