解析字符串并返回数组

时间:2014-10-09 04:35:08

标签: java bluej

这是我的代码,它接受一个字符串并按顺序返回数组中每个字符的ascii值数组。编译错误是必需的数组,但找到java.lang.String'

public class Q1E {
    int[] stringToCodes(String characters){
        int characterLength= length(characters);
        int[] array=new int[characterLength];
        for(int i=0;i<characterLength;i++) {
            array[i] =(int) characters[i];
        }
    }
}

4 个答案:

答案 0 :(得分:1)

您不能在字符串上使用数组语法,而是使用character.charAt(i)。此外,您需要在最后返回数组。

答案 1 :(得分:1)

Java将Unicode / UTF-16用于字符串,而不是ASCII。

如果想要限制你的方法来处理ASCII范围内的字符,它应该在遇到范围之外时抛出异常。

如果您需要一系列“字符代码”(也称代码点),则必须使用方法String.codePointAt()。因为String包含UTF-16代码单元的计数序列,并且每个代码点可能有一个或两个代码单元,所以您只知道String.length()是预先提供的代码点数量的上限

public class Q1E {
  int[] stringToCodes(String s) {
    int[] codepoints = new int[s.length()]; // there might be fewer 
    int count = 0;
    for(int cp, i = 0; i < s.length(); i += Character.charCount(cp)) {
        cp = s.codePointAt(i);
        // for debugging, output in Unicode stylized format
        System.out.println(String.format(
            cp < 0x10000 ? "U+%04X" : "U+%05X", cp));
        codepoints[count++] = cp;
    }
    int[] array = java.util.Arrays.copyOf(codepoints, count);
    return array;
  }
}

尝试使用英文单词上的Wikipedia链接:

stringToCodes("http://en.wikipedia.org/wiki/Résumé");

答案 2 :(得分:0)

您的代码似乎有一些错误,String#length()我建议您添加null支票。最后(因为characters不是数组),我想你想使用String#charAt(int)

int[] stringToCodes(String characters) {
    int characterLength = 0;
    if (characters != null) {
        characterLength = characters.length();
    }
    int[] array = new int[characterLength];
    for (int i = 0; i < characterLength; i++) {
        array[i] = characters.charAt(i);
    }
    return array;
}

当然,你可以用三元

来缩短它
int characterLength = (characters != null) ? characters.length() : 0;
int[] array = new int[characterLength];

答案 3 :(得分:0)

试试这个:

public class Test {


 public static void main(String[] args) {

     int []ascii=stringToCodes("abcdef");
     for(int i=0;i<ascii.length;i++){
      System.out.println(ascii[i]);
     }

 }
  public static int [] stringToCodes(String characters){
     int []ascii=new int[characters.length()];

    for(int i=0;i<characters.length();i++){
      ascii[i]=(int)characters.charAt(i);
    }
 return ascii;
}

}