【发布时间】:2014-12-11 03:14:12
【问题描述】:
我正在练习学习 Java,我在网上找到了这个练习来输入一个长整数(例如 2827),然后在这种情况下计算整数(2,8 和 7)= 3 中有多少个不同的数字。
我正在考虑使用 for 循环,然后使用 subString,比较数字是否彼此相等,并且他们(教程)建议我应该使用“已使用”的数组来注册出现的数字,尽管如此
这是我目前得到的:
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);
}
}
我现在的问题是这段代码不起作用,我不确定我在这里采取了正确的方法。我也没有找到包含“使用”布尔数组的原因或目的。
- 我的代码有什么问题?
- 如何巧妙地使用布尔数组并提高代码效率?
【问题讨论】:
-
您的方法似乎可行,但我自己会采取不同的方法。您有实际问题吗?
-
您没有解释您发布的代码遇到的问题,或者根本没有提出问题。一个有效的关闭原因是“离题。寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码. 没有明确问题陈述的问题对其他读者没有用处”。你能edit 解决这两个问题吗?
-
我相信我现在已经解决了这些问题,Ken White。我就我的代码提出了两个问题。