【发布时间】:2020-07-25 09:24:47
【问题描述】:
我知道现在有一种更简单的方法可以解决这个问题陈述。但这是我尝试过但无法调试的东西。
这是我的代码。
String str="java is a programming language";
int flag=0,k=0;
char unique[]=new char[256];
for(int i=0;i<str.length();i++){
for(int j=i+1;j<str.length();j++){
if(str.charAt(i)==str.charAt(j))
flag++;
}
System.out.println(flag); //printing flag values
if(flag==0){
unique[k]=str.charAt(i);
System.out.println(unique[k]); //printing array values
k++;
}
}
这是我的输出。
Enter the sentence:
java is a programming language
0
j
5
5
9
12
13
13
15
18
19
19
20
20
23
23
25
26
26
26
27
29
29
29
30
30
31
31
31
31
31
Unique characters:
j
我想了解这些数值是从哪里打印出来的。我确定打印标志值和数组值会给我个位数。这些两位数是什么?
【问题讨论】:
-
在
System.out.println(flag);,您正在打印由flag持有的值,但由于您从未将它从以前的迭代中保存的每个字符重置为0。 -
“我知道有一种更简单的方法可以解决这个问题”:
s.chars().distinct().mapToObj(i -> (char) i).forEach(System.out::println).