我正在练习学习Java,我发现在线练习输入一个长整数(例如2827),然后计算整数(2,8和7)= 3中有多少个不同的数字。< / p>
我正在考虑使用for循环,然后使用subString,比较数字是否相等,他们(教程)建议我应该使用数组“used”来记录哪些数字出现,但是
这是我到目前为止所得到的:
import java.util.Scanner;
public class UniqueInteger {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
boolean[] used = new boolean[10];
int uniqueNbr = 0;
System.out.print("Input an integer: ");
String nbrString = String.valueOf(scan.nextLong());
for (int i = 0; i < nbrString.length(); i++) {
String bigI = String.valueOf(i);
if(nbrString.substring(i,(i+1)).equals(bigI)){
uniqueNbr++;
}
}
System.out.println("Amount of unique digits: " + uniqueNbr);
}
}
我现在的问题是这段代码不起作用,我不确定我是否采取了正确的方法。我也没有找到包含布尔数组“used”的原因或目的。
答案 0 :(得分:1)
您需要检查字符串中的当前数字是否已被使用(使用您的布尔数组)。如果尚未使用,请将used [num]设置为true并增加uniqueNbr。
import java.util.Scanner;
public class UniqueInteger {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
boolean[] used = new boolean[10];
int uniqueNbr = 0;
System.out.print("Input an integer: ");
String nbrString = String.valueOf(scan.nextLong());
for (int i = 0; i < nbrString.length(); i++) {
int num = Character.getNumericValue(nbrString.charAt(i));
if(!used[num]) {
uniqueNbr++;
used[num] = true;
}
}
System.out.println("Amount of unique digits: " + uniqueNbr);
}
}