0

尝试将我的 char 变量从我的 char 数组转换为 int 时,我发生了一些奇怪的困惑。

这是我的代码:

public class Luhn {

private String cardNumber;
private char[] cardArray;

public Luhn(String cardNumber) {
    this.cardNumber = cardNumber;
    cardArray = new char[cardNumber.length()];

    for (int i = 0; i < cardNumber.length(); i++) {
        cardArray[i] = cardNumber.charAt(i);
    }


public void calculation() {
    for(int i = cardArray.length-1; i >= 0; i-=2) {
        char y = cardArray[i];
        int x = (int) (cardArray[i] * 1);
        if(x > 9) {
            //int total = 0;        
        }
    }


}

我不断在 x 中得到奇怪的输出。像 58 之类的东西。我正在向后访问数组并将每个第二个数字检索回数组的前面。我基本上希望 x 是每个数组元素中的任何数字。我知道用这小段代码它会连续覆盖 x,但我希望它是 char 数组中指定的数字,而不是一些与我的数组元素不匹配的随机数。问题在于我尝试将char转换为int的计算方法。

请帮忙

谢谢。

例如;

4

3 回答 3

8

你可以做

(int)(cardArray[i] - '0')

将单个数字转换为数字。

您可以这样做的原因是因为每个字符都是一个数字。

'0' = 48
'1' = 49
'2' = 50
'3' = 51
   ...
'9' = 57

减去 的值0可以获得每个字符的整数值。

于 2013-05-17T18:27:29.363 回答
2

chars实际上是代表字符的数字。如果要将其转换为 int,请减去0char

int x = (int) (cardArray[i] - '0');
于 2013-05-17T18:27:18.710 回答
0

您可以使用Character.getNumericValue(char),请参阅JavaDoc here

于 2015-02-08T17:10:08.193 回答