我有一个家庭作业,要求我编写一个计算输入行中点数的程序。到目前为止,这是我所提出的它的工作(有点),除了它计算一切而不是只有点。我很困惑如何让程序只计算点数。
import javax.swing.*;
import java.lang.Character;
public class Assign5_Polk {
public static void main(String[] args) {
String string = JOptionPane.showInputDialog("Give me dots and i will count them : ");
int count = 0;
for (int i = 0; i< string.length(); i++) {
char c = string.charAt(i);
if (string.contains(".")) {
count++;
}
}
System.out.println("There are" + " "+ count + " " + "dots" +" " + "in this string. " + string);
}
}
答案 0 :(得分:5)
if (string.contains("."))
这一行检查整个字符串,如果其中有.
,则返回true。
相反,您想测试c
是否为.
答案 1 :(得分:2)
更改if
条件如下:
if (string.contains(".")) { // Check whole String contain dot
count++;
}
到
if (c == '.') { //Check single char of String contain dot
count++;
}
答案 2 :(得分:0)
在for循环中,您反复测试整个字符串是否有点,并且每次都递增计数器。您需要if (c == '.')
之类的内容来确定您正在查看的角色是否为点。
答案 3 :(得分:0)
解决方案没有循环; - )
count = string.replaceAll("[^.]","").length();
这使你的程序很短:
public static void main(String[] args) {
String string = JOptionPane.showInputDialog("Give me dots and i will count them : ");
int count = string.replaceAll("[^.]","").length();
System.out.println("There are "+ count + " dots in this string: " + string);
}