我正在尝试制作一个程序,询问用户两个数字。我想确定某个值出现在数字序列中的次数。例如,如果用户输入10和20,则数字“1”将出现9次。我想知道的是我必须设置什么条件来查看数字“1”出现的次数。
这是我到目前为止所得到的......
System.out.println("Enter a number: ");
int no1 = scan.nextInt();
System.out.println("Enter a number: ");
int no2 = scan.nextInt();
int i;
int j = 0;
for(i = no1; i <= no2; i++){
if(){ // Some condition here
j++;
}
}
System.out.println(j);
}
关于如何使我的代码高效的任何其他提示和技巧也将非常感激。
答案 0 :(得分:1)
for (int i = no1; i <= no2; i++) {
if(String.valueOf(i).contains("1"))
int occurances = StringUtils.countOccurrencesOf(String.valueOf(i), "1");
j+=occurances
}
答案 1 :(得分:0)
假设您想计算数字列表中数字的出现次数,您可以例如使用modulo:
int[] occurrences = new int[10];
for (int i = n1; i <= n2; i++) {
int currentNumber = Math.abs(i);
while (currentNumber > 0) {
occurrences[currentNumber % 10]++;
currentNumber /= 10;
}
}
或解析数字的字符串表示
int[] occurrences = new int[10];
for (int i = n1; i <= n2; i++) {
String cur = String.valueOf(Math.abs(i));
for (int j = 0; j < cur.length(); j++) {
char currentChar = cur.charAt(j);
if (currentChar != '-')
occurrences[Character.getNumericValue(currentChar)]++;
}
}
出现次数将包含0到9之间的数字计数;
编辑:添加了对负整数的处理。