这是我的代码,它接受一个字符串并按顺序返回数组中每个字符的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];
}
}
}
答案 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;
}
}