java试图在字符串中输出*的出现次数
这让我头疼。我试图计算从输入扫描程序中获取的用户输入中出现的*。但每次我尝试时,它要么继续添加前几行的数字,要么拒绝输出任何内容。感到失落和沮丧,因为我看不出代码有任何问题。谁能告诉我我做错了什么吗。 编译器没有给出语法错误,我看不到逻辑错误
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
# 1 楼答案
代码中有三个问题1)您正在用第二行替换用户输入的第一行。所以第一条线永远不会被考虑。2) for循环中的变量会在每次循环迭代中初始化。因此,如果当前字符为*0,则计数为1。3) 使用计数值0而不是1启动循环。试试下面的代码
# 2 楼答案
似乎while循环中的
while loop
和input = kb.nextLine();
有问题如果您只需要获取字符串中的
'*'
计数,那么下面的内容应该适合您# 3 楼答案
您正在for循环内初始化
starCount
,因此每次迭代后它都会得到0
。 而且你的count
应该从0
开始&;你的System.out.println(starCount);
语句应该在for循环之后,因为你必须为每个用户输入打印一次starCount
的最终值按如下方式修改代码:
# 4 楼答案
你应该/可以这样做:
它是Java 8上使用流API的一行程序