package Medium;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Scanner;
public class Demo3 {
public static void main(String[] args) {
int sum = 0;
System.out.println("please input a num:");
Scanner in = new Scanner(System.in);
int num = in.nextInt();
ArrayList<String> arr = new ArrayList<String>();
for(int i =0;i<=num;i++){
String s = Integer.toString(i); //get all the numbers changed into String type
arr.add(i, s);
//System.out.println(arr);
}
for(int j=0;j<arr.size();j++){
String t = arr.get(j);
System.out.println(t+"----------");
for(int k =0;k<t.length();k++){ //go through all the nums
System.out.println(t.charAt(k));
if(t.charAt(k)==(char)(1)){ //this line may possible be wrong?
sum = sum+1;//none of the sum be added
System.out.println("sum:"+sum);
}else{
break;
}
}
System.out.println(sum);
}
}
}
输入11,结果是:
please input a num:
11
0----------
0
1----------
1
2----------
2
3----------
3
4----------
4
5----------
5
6----------
6
7----------
7
8----------
8
9----------
9
10----------
1
11----------
1
0
描述是:计算0到n之间的k的数量。 k可以是0 - 9.
没有使用sum
,为什么会这样?
我虽然可能会出现if(t.charAt(k) == (char)(1))
?
答案 0 :(得分:0)
你是对的。
if(t.charAt(k)==(char)(1)){
必须是
if(t.charAt(k)=='1'){
(char)(1)
是字符集中第一个字符,而不是数字1字符。
如果你在一个程序中测试它,你会看到区别:
System.out.println((char)(1));
System.out.println('1');
或者你可以使用十六进制代码看到它:
System.out.println(String.format("Hex code of (char)1 %04x", (int) (char)1));
System.out.println(String.format("Hex code of '1' %04x", (int) '1'));
输出
Hex code of (char)1 0001
Hex code of '1' 0031