【问题标题】:Convert a number of the datatyp String to char将多个数据类型 String 转换为 char
【发布时间】:2020-07-12 11:43:26
【问题描述】:

我尝试将字符串中的数字转换为具有 datatyp 字符的数组。我的问题是,我的数组中的数字每次都是 48 到高。我也知道这个问题与 ASCII 表有关。我该怎么做才能解决这个问题?

package Test;

public class Main {




    public static void main(String[] args) {

        int iNumber = 0;    int indexNumber = 0;


        String calculation = "5+8";
        int lengthCalculation = calculation.length();
        int[] number= new int[lengthCalculation/2+1];


        while(iNumber < lengthCalculation) {

            number[indexNumber] = calculation.charAt(iNumber);;

                iNumber+=2;
                indexNumber++;
        }

        for(int q : number) {
            System.out.println(q);         }
    }


}

【问题讨论】:

  • 请分享您的预期和实际输出。
  • 你的代码不是很好。你真正想解决什么问题?要么,拆分+(或者可能拆分非数字),然后解析值。或者,使用 ScriptEngine 为您计算表达式。简而言之,你想看58吗?或者你想要13?还是您想要5+8(全部分开)。
  • 你的问题是什么?
  • 结果应该是5和8
  • 从数字字符中减去'0'得到数字值。

标签: java arrays char


【解决方案1】:

使用

number[indexNumber] = calculation.charAt(iNumber) - '0';

【讨论】:

  • 请添加几句话来解释您的代码在做什么,以便您的回答获得更多的支持。
【解决方案2】:

数字 0 的 ASCII 值为 48。0-9 位的 ASCII 值范围为 48-57。因此,每当您提取一个字符时,比如说“5”,您将在数组中存储 53 而不是 5。所以尝试使用下面的代码修改减去字符'0':

public static void main(String[] args) {

    int iNumber = 0;    int indexNumber = 0;


    String calculation = "5+8";
    int lengthCalculation = calculation.length();
    int[] number= new int[lengthCalculation/2+1];


    while(iNumber < lengthCalculation) {

        number[indexNumber] = calculation.charAt(iNumber)-'0'; //modified

            iNumber+=2;
            indexNumber++;
    }

    for(int q : number) {
        System.out.println(q);         }
}

【讨论】:

  • Thx 是否也有可能以某种方式获得结果 5、+、8?因为如果我尝试它,我会得到 5、-5、8 只是在徘徊
  • 看,字符“+”的 ASCII 值是 43。您可以通过以下方式将 43 重新转换回字符:char x = (char) number[indexNumber]
猜你喜欢
  • 2013-02-20
  • 1970-01-01
  • 2017-05-30
  • 2012-11-09
  • 1970-01-01
  • 2022-07-06
  • 1970-01-01
  • 2016-07-28
  • 1970-01-01
相关资源
最近更新 更多