Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将字符A-Z转换为相应的int。_Java_Arrays - Fatal编程技术网

Java 将字符A-Z转换为相应的int。

Java 将字符A-Z转换为相应的int。,java,arrays,Java,Arrays,我试图将一个字符从一个数组(第二个和第三个)槽转换为int值,对应于A-Z的A=1、B=2等 我认为如果(x.charAt(I)='a'){intz=1;}对于整个a-z,这是一个非常实用的方法,那么还有很长的路要走。有没有什么方法可以用更短的代码做同样的事情 public static void computeCheckDigit(String x){ char [] arr = new char[x.length()]; for(int i=0; i<x.length();i++){

我试图将一个字符从一个数组(第二个和第三个)槽转换为int值,对应于A-Z的A=1、B=2等

我认为如果(x.charAt(I)='a'){intz=1;}对于整个a-z,这是一个非常实用的方法,那么还有很长的路要走。有没有什么方法可以用更短的代码做同样的事情

public static void computeCheckDigit(String x){
char [] arr = new char[x.length()];

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


}
publicstaticvoidcomputechkdigit(字符串x){
char[]arr=新字符[x.length()];
对于(int i=0;i请尝试以下方法:

arr[i] = Character.toLowerCase(x.charAt(i)) - 'a' + 1;
您必须使用int数组而不是char数组

public static void main(String[] args) {
    String x = "AbC";
    int[] arr = new int[x.length()];

    for (int i = 0; i < x.length(); i++) {
        arr[i] = Character.toLowerCase(x.charAt(i)) - 'a' + 1;
    }
    System.out.println(Arrays.toString(arr));

}

由于您似乎不区分大小写,因此您可能希望先将字符串大写或小写,但您希望了解区域设置:

// If you don't state a locale, and you are in Turkey,
// weird things can happen. Turkish has the İ character.
// Using lower case instead could lead to the ı character instead.
final String xu = x.toUpperCase(Locale.US);
for (int i = 0; i < xu.length(); ++i) {
    arr[i] = xu.charAt(i) - 'A' + 1;
}
//如果您没有说明区域设置,并且您在土耳其,
//奇怪的事情可能会发生。土耳其语具有İ的特征。
//改用小写可能会导致ı字符。
最终字符串xu=x.toUpperCase(Locale.US);
for(int i=0;i
另一个循环将使用:

// Casing not necessary.
for (int i = 0; i < x.length(); ++i) {
    // One character
    String letter = x.substr(i, i+1);
    // A is 10 in base 11 and higher.  Z is 35 in base 36.
    // Subtract 9 to have A-Z be 1-26.
    arr[i] = Integer.valueOf(letter, 36) - 9;
}
//不需要大小写。
对于(int i=0;i
如果
'A'==1
,那么
'A'
等于什么?如果使用ASCII字符,可以执行类似
(int)Character.toUpperCase('A')-64的操作,它将=
1
(或
(int)Character.toUpperCase(x.charAt(i))-64
)字符串将类似于char和int的混合物。我只需要将第2个和第3个字母转换为int,因为之后需要进行计算。将在后面添加ignorecase。@谢谢。我使用了int sec=(int)Character.toUpperCase(x.charAt(1))-64;@LRZJohn我下面的答案解决了你的问题,还是你想要别的?这是应用型偏执狂。我编辑了我的答案,指出你不需要在我的第二个选择中改变这个案例。
// Casing not necessary.
for (int i = 0; i < x.length(); ++i) {
    // One character
    String letter = x.substr(i, i+1);
    // A is 10 in base 11 and higher.  Z is 35 in base 36.
    // Subtract 9 to have A-Z be 1-26.
    arr[i] = Integer.valueOf(letter, 36) - 9;
}