在java中将带字母的字符串数组转换为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

好的,我将尝试在这里解释我的问题,我需要做的是将字符串数组转换为int数组

这是我的一部分(最初的设置)

System.out.println(“请输入要转换为十进制的4位数字”);
basenumber=input.next();
temp=基准编号。拆分(“”);
对于(int i=0;i

基本上我想做的是,将0-9设置为实际数字,然后从输入字符串(如Z3A7)中将a-z设置为10-35,理想情况下打印为35 3 10 7

您可以在循环中使用这一行(假设用户不输入空字符串):

对上述代码的解释:

  • temp[i].toLowerCase()
    =>z和z将转换为相同的值
  • (int)temp[i].toLowerCase().charAt(0)
    =>字符的ASCII码
  • -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