【发布时间】:2016-09-27 00:32:49
【问题描述】:
我不明白这段代码是如何工作的。问题是在给定年份后找到具有不同数字的下一年。
public Main(){
try{
BufferedReader in;
in = new BufferedReader (new InputStreamReader (System.in)); //Used for CCC
String year = (in.readLine());
for(int i = Integer.parseInt(year)+1;; i++){
String f = Integer.toString(i);
boolean [] characters = new boolean[10];
boolean unique = true;
for(int x = 0; x < f.length(); x++){
if (characters[f.charAt(x) - '0']){
unique = false;
break;
}
else{
characters[f.charAt(x)-'0'] = true;
}
}
if (unique){
System.out.println(f);
return;
}
这个 if 语句具体是如何工作的?
if (characters[f.charAt(x) - '0']){
在这里检查布尔值有什么作用?他们不应该都默认为假吗?为什么-'0'在那里?抱歉这个菜鸟问题。
【问题讨论】:
-
您是否尝试过设置断点或以其他方式调试代码以尝试自己理解?
-
Shouldn't they all be defaulted to false?- 是的,它们是,但你没有检查characters[x]你正在检查characters[f.charAt(x)-'0'] -
@cricket_007 我已经尝试过了,但我对 java 很陌生,所以我真的不知道如何使用调试器。我会看一些关于它的视频,谢谢你的建议。跨度>
-
我怀疑你错过了
else部分。如果没有发现位置为真,则设置为真(characters[f.charAt(x)-'0'] = true;),这样以后发现位置已经为真就知道是第二次遇到字符了