检查循环中的字符值

时间:2017-03-31 07:33:25

标签: java

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))

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