这是我的头脑。我正在尝试计算从输入扫描仪中获取的用户输入中出现的*的数量。但每次我尝试时,它要么继续添加前一行的数字,要么拒绝输出任何内容。感到失落和沮丧,因为我无法看到代码的任何问题。有人可以告诉我我做错了什么。 编译器没有给出语法错误,我也看不到逻辑错误。
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
答案 0 :(得分:1)
您正在for循环中初始化starCount
,以便在每次迭代后获得0
。
此外,count
应该从0
&amp;你的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
}
答案 1 :(得分:0)
在while循环中,while loop
和input = kb.nextLine();
似乎存在问题。
如果您只需要在字符串中计算'*'
,那么下面的内容应该适合您。
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
String input;
input = kb.nextLine();
int count = 0;
int starCount = 0;
for (count = 0; count < input.length(); count++) {
if (input.charAt(count) == '*') {
starCount++;
}//if
}//for
System.out.println(starCount);
}//main
答案 2 :(得分:0)
你应该/可以这样做:
String input = "abc*defde *d z*dz *";
final long count = input.chars( )
.filter( c -> c == '*' )
.count( );
使用Stream API
是Java 8上的单线程答案 3 :(得分:0)
您的代码中有三个问题1)您正在用第二行替换用户输入的第一行。所以第一行永远不会被考虑。 2)for循环中的变量在每次循环迭代中初始化。因此,如果当前char为* else,则计数为1。3)启动循环,计数值为0而不是1.尝试下面的代码
public static void main(String[] args){
Scanner kb = new Scanner(System.in);
String input;
input = kb.nextLine();
int count = 0;
while(!input.equals("#")){
int starCount = 0;
for(count = 0; count < input.length(); count ++){
if(input.charAt(count)=='*'){
starCount++;
}//if
}//for
System.out.println(starCount);
input = kb.nextLine();
}//while
}//main
答案 4 :(得分:0)