这让我很困惑。我正在尝试计算从输入扫描仪中获取的用户输入中出现的 * 数量。但每次我尝试时,它要么继续添加前一行中的数字,要么拒绝输出任何内容。感到失落和沮丧,因为我看不到代码有任何问题。有人可以告诉我我做错了什么吗? 编译器没有给出语法错误,我看不到逻辑错误。
import java.util.Scanner;
public class lab11{
public static void main(String[] args){
Scanner kb = new Scanner(System.in);
String input;
input = kb.nextLine();
int count = 0;
while(!input.equals("#")){
input = kb.nextLine();
for(count = 1; count < input.length(); count ++){
int starCount = 0;
if(input.charAt(count)=='*'){
starCount++;
}//if
System.out.println(starCount);
}//for
}//while
}//main
}//class
最佳答案
您正在 for 循环内初始化 starCount
,因此每次迭代后它都会获得 0
。
而且你的 count
应该从 0
开始,你的 System.out.println(starCount);
语句应该在 for 循环之后,因为你必须对于每个用户输入,打印一次 starCount
的最终值。
像这样修改你的代码:
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner kb = new Scanner(System.in);
String input="";
int count = 0;
while(true){
input = kb.nextLine();
if(input.equals("#"))
break;
int starCount=0;
for(count = 0; count < input.length(); count ++){
if(input.charAt(count)=='*'){
starCount++;
}//if
}//for
System.out.println(starCount);
}//while
}//main
}
关于java - 尝试输出字符串中*出现的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36233146/