【问题标题】:convert each item of a char[] to its ASCII code将 char[] 的每一项转换为其 ASCII 码
【发布时间】:2016-06-09 03:12:03
【问题描述】:

如何将 char[](char 数组)的每一项转换为其 ascii 代码? char_arr[i].charAt(0) 不起作用,因为该方法不存在。我不能对char_arr[i] 使用toString 方法。

import java.util.Scanner;

/**
 * Created by mona on 2/25/16.
 */
public class FunnyString {
    public static void main(String[] args){
        Scanner sc= new Scanner(System.in);

        int num_str;
        num_str=sc.nextInt();
        Boolean flag=true;

        for (int i=0;i<num_str;i++){
            StringBuilder strb  = new StringBuilder(scan.nextLine());
            StringBuilder str_reverse=strb.reverse();
            Char[] strb_arr=strb.toString().toCharArray();
            Char[] strb_rev_arr=str_reverse.toString().toCharArray();
            for (int i=1; i<strb_arr.length;i++){
                if (Math.abs(strb_arr[i]-strb_arr[i-1])!=Math.abs(strb_rev_arr[i]-strb_rev_arr[i-1])){
                    flag=false;
                }
            }
        }
        if (flag==false){
            System.out.println("Not funny");
        }
        else{
            System.out.println("Funny");
        }

    }
}

【问题讨论】:

  • 我相信你可以投'int'
  • "ASCII" 是错误的术语。 Java 字符串是 Unicode/UTF-16 代码单元 (Char) 的计数序列。请记住,现实世界的字符串(例如包含emoticons)比您的算法可以处理的要复杂得多。请参阅StringBuilder.reverse 的警告。

标签: java string char ascii


【解决方案1】:

因为char[]的元素是UTF-16编码单元,标准的数字表示形式是反斜杠,“u”,四个十六进制数字。例如,“a”表示为“\u0061”。

另外,请注意,某些 Unicode 代码点以两个 UTF-16 代码单元编码。例如,四分音符“??”(可能不会与您的浏览器在此网页上使用的字体一起显示)。

for (char c : "abc?123".toCharArray())
{
    System.out.println(String.format("\\u%04X", (int)c));
}   

【讨论】:

    【解决方案2】:

    您可以使用转换为整数 (int) ,或者只是将 0 添加到您的字符。

    看到这个

    char[] cs = {'a', 'b', 'c'};
    for (Character c : cs)
    {
        System.out.println(c + 0);
    }
    

    输出

    97
    98
    99
    

    查看给定字符 http://www.asciitable.com/ 的 ascii 代码。

    此外,您还可以从数值中获取字符。

    char[] cs = {'a', 'b', 'c'};
    for (Character c : cs)
    {
        System.out.println(c + 0);
        System.out.println( (char)(c + 0) );
    }
    

    输出

    97
    a
    98
    b
    99
    c
    

    【讨论】:

      【解决方案3】:

      遍历数组,通过强制转换将每个char值赋给一个int,即

      char_to_ascii[i] = (int) char_arr[i] ;
      

      【讨论】:

        【解决方案4】:

        你可以试试这个:将其转换为int

        char[] chars;
        for (char aChar : chars) {
            System.out.println("chars = " + (int) aChar);
        }
        

        【讨论】:

        • 这适用于所有 ASCII 字符。对于非 ASCII 字符,它将返回大于 127 的数字(但无论如何这些都不是 ASCII,所以这可能没问题)。
        猜你喜欢
        • 2014-10-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-10
        • 2017-04-16
        • 2013-04-15
        相关资源
        最近更新 更多