在java中将带字母的字符串数组转换为int数组
好的,我将尝试在这里解释我的问题,我需要做的是将字符串数组转换为int数组 这是我的一部分(最初的设置)在java中将带字母的字符串数组转换为int数组,java,arrays,string,integer,int,Java,Arrays,String,Integer,Int,好的,我将尝试在这里解释我的问题,我需要做的是将字符串数组转换为int数组 这是我的一部分(最初的设置) System.out.println(“请输入要转换为十进制的4位数字”); basenumber=input.next(); temp=基准编号。拆分(“”); 对于(int i=0;i为您的规范减去87 考虑到您希望将Z表示为35,我编写了以下函数 更新: Z的ASCII值为90,因此如果要将Z表示为35,则应从55中减去每个字符(90-35=55): public static int
System.out.println(“请输入要转换为十进制的4位数字”);
basenumber=input.next();
temp=基准编号。拆分(“”);
对于(int i=0;i
基本上我想做的是,将0-9设置为实际数字,然后从输入字符串(如Z3A7)中将a-z设置为10-35,理想情况下打印为35 3 10 7您可以在循环中使用这一行(假设用户不输入空字符串): 对上述代码的解释:
=>z和z将转换为相同的值temp[i].toLowerCase()
=>字符的ASCII码(int)temp[i].toLowerCase().charAt(0)
=>为您的规范减去87-87
- 考虑到您希望将Z表示为35,我编写了以下函数
更新:
Z的ASCII值为90,因此如果要将Z表示为35,则应从55中减去每个字符(90-35=55):
public static int[]convertstringarraytintarray(String[]sarray)引发异常{
if(sarray!=null){
int intarray[]=新int[sarray.length];
for(int i=0;i
在循环中尝试以下方法:
Integer.parseInt(letter, 36);
这将字母
解释为一个36进制数字(0-9+26个字母)
那么问题是什么呢?您想优化代码还是遇到了一些问题?问题是我发布的代码接受字符串并将其分解为数组,但这就是它所做的一切。它不会向新数组中添加值或更改值。这可能是这里最简单、最简洁的答案。这会导致整数。parseInt(“”);需要的每一行?如果可以的话,我只是好奇并检查所有可能的答案。@madhatter,你需要将每个字母通过
整数。parseInt
@Jeff Ascii的“Z”是122,所以我们应该减去87得到35,op指定了。是的,我刚刚意识到这一点,并且在你发布你的评论时改变了我的评论。我的错…我在尝试这个,我和一个朋友讨论了ascii码,但我们都不知道该怎么办。在我部署代码后,它抛出了一个异常java.lang.StringIndexOutOfBoundersException:String索引超出范围:0@java.lang.StringcharAt(未知源代码)@base.mainjava:38,这是您代码的第一行,我需要导入什么吗?@madhatter我说“假设用户不输入空字符串”在我上面的帖子中,您的字符串似乎是空的,即temp[i]=“”;用户只需输入数字(0-9)或字符(a-z和a-z),在这种情况下,我的代码工作正常。当我运行代码时,我输入了字符串asdf,这就是返回的内容。字符串数组是如何保存和拆分的?
int x = Character.isDigit(temp[i].charAt(0)) ?
Integer.parseInt(temp[i]) : ((int) temp[i].toLowerCase().charAt(0)-87) ;
numValue.add( x );
public static int[] convertStringArraytoIntArray(String[] sarray) throws Exception {
if (sarray != null) {
int intarray[] = new int[sarray.length];
for (int i = 0; i < sarray.length; i++) {
if (sarray[i].matches("[a-zA-Z]")) {
intarray[i] = (int) sarray[i].toUpperCase().charAt(0) - 55;
} else {
intarray[i] = Integer.parseInt(sarray[i]);
}
}
return intarray;
}
return null;
}
Integer.parseInt(letter, 36);
Integer.parseInt("2", 36); // 2
Integer.parseInt("B", 36); // 11
Integer.parseInt("z", 36); // 35