下面是我的简单程序,它将字符串转换为数组元素,charAt(i)
根据文档没有返回它应该的内容。我的代码是
public class StringToArray {
public static void main(String[] args){
String test = "12345";
fromPuzzleString(test);
}
public static void fromPuzzleString(String puzzle) {
int puz[] = new int[puzzle.length()];
for (int i = 0; i < puzzle.length(); i++) {
puz[i] = puzzle.charAt(i);
}
for (int c : puz) {
System.out.println(c);
}
}
}
预期输出:1 2 3 4 5
实际输出:49 50 51 52 53
但是当我使用puz [i] = puzzle.charAt(i) - “O”时; 它工作正常......!
答案 0 :(得分:4)
您正在显示角色的unicode点值。相反,你可以使用
System.out.println(Character.getNumericValue(c));
答案 1 :(得分:4)
这是因为角色的值与用于表示它的int
不同。将puz
声明为char[]
可以解决问题并按预期打印数字。
答案 2 :(得分:2)
试
char puz[] = new char[puzzle.length()];
for (int i = 0; i < puzzle.length(); i++) {
puz[i] = puzzle.charAt(i);
}
for (char c : puz) {
System.out.println(c);
}
答案 3 :(得分:2)
正常。
你取字符串“1”而不是数字1。 要获取数字,请使用Integer.paserInt(yourString); 然后你会得到你的号码。
例如:
public static void main(String[] args){
String test = "12345";
fromPuzzleString(test);
}
public static void fromPuzzleString(String puzzle) {
int puz[] = new int[puzzle.length()];
for (int i = 0; i < puzzle.length(); i++) {
puz[i] = Integer.parseInt(puzzle.charAt(i));
}
for (int c : puz) {
System.out.println(c);
}
}
答案 4 :(得分:1)
您正在将您获取的char转换为int,因此Java将打印其整数表示。将结果存储为字符串数组,并循环遍历该数组以进行打印。
答案 5 :(得分:0)
你隐式地将char
转换为int
,char'1'不等于1,你可以将它们转换为char:
System.out.println((char)c);
答案 6 :(得分:0)
您正在使用int数组,因此它会打印ascii值。您可以执行以下操作:
public static void fromPuzzleString(String puzzle) {
for (int i = 0; i < puzzle.length(); i++) {
System.out.println( puzzle.charAt(i));
}
}
您无需不必使用2 for循环和数组。
答案 7 :(得分:0)
"charAt(i) is not returning what it is supposed to according to documentation"
您无法将char
放入int
。否则它将返回 unicode 值。
返回的值Real output: 49 50 51 52 53
是unicode ASCII Characters codes
这将解决您的问题:
public class StringToArray {
public static void main(String[] args){
String test = "12345";
fromPuzzleString(test);
}
public static void fromPuzzleString(String puzzle) {
char[] puz = new char[puzzle.length()];
for (int i = 0; i < puzzle.length(); i++) {
puz[i] = puzzle.charAt(i);
}
for (char c : puz) {
System.out.println(c);
}
}
}
但是,为了节省内存,我建议你不要声明一个数组,立即显示这些值:
public class StringToArray {
public static void main(String[] args){
String test = "12345";
fromPuzzleString(test);
}
public static void fromPuzzleString(String puzzle) {
for (int i = 0; i < puzzle.length(); i++) {
System.out.println(puzzle.charAt(i));
}
}
}