Java 向数组索引添加字符串值时出错 公共等级aa{ 公共静态void main(字符串[]args){ 整数=521; 字符串temp1=”“+数字; int结果=0; int[]temp2=新int[temp1.length()]; 对于(int i=0;i
您的问题不是很清楚您是否在征求意见。但是一个查询“当我将该字符串值添加到数组中时,它走错了方向。” 因此,String是引用类型,而数组是int类型。您需要将值从String解析为intJava 向数组索引添加字符串值时出错 公共等级aa{ 公共静态void main(字符串[]args){ 整数=521; 字符串temp1=”“+数字; int结果=0; int[]temp2=新int[temp1.length()]; 对于(int i=0;i,java,arrays,string,for-loop,indexing,Java,Arrays,String,For Loop,Indexing,您的问题不是很清楚您是否在征求意见。但是一个查询“当我将该字符串值添加到数组中时,它走错了方向。” 因此,String是引用类型,而数组是int类型。您需要将值从String解析为int Integer.parseInt(String)正如我在评论中所说,temp2是错误的类型。您将其声明为ints数组,因此println当然将其视为数字数组,而不是可打印字符数组 只需将temp2的类型更改为char[]: public class aa { public static void mai
Integer.parseInt(String)
正如我在评论中所说,temp2
是错误的类型。您将其声明为int
s数组,因此println
当然将其视为数字数组,而不是可打印字符数组
只需将temp2
的类型更改为char[]
:
public class aa {
public static void main(String[] args) {
int number = 521;
String temp1 = "" + number;
int result = 0;
char[] temp2 = new char[temp1.length()];
for(int i=0; i<temp1.length(); i++){
int len = temp1.length();
temp2[i] = temp1.charAt(len-i-1);
System.out.println(temp2[i]);
System.out.println(temp1.charAt(len-i-1));
}
// print the whole reversed number on one line
for(char c : temp2) {
System.out.print(c);
}
System.out.println();
}
}
当然,这不是最佳解决方案,只是修复您编写的代码以使其正常工作的一种方法。请参阅,以获取有关反转数字问题的更好解决方案的链接。由于
temp2
是一个int
值数组,因此需要修复以下赋值:
temp2[i]=temp1.charAt(len-i-1);
因为它分配了一个ASCII值char
这可以通过减去0
或使用Character::getNumericValue
temp2[i] = temp1.charAt(len-i-1) - '0';
// or
temp2[i] = Character.getNumericValue(temp1.charAt(len-i-1));
可以在不使用任何字符串转换的情况下反转非负整数:
temp2
数组的“长度”由Math.log10
%
计算,并在大于0时除以输入publicstaticvoidmain(字符串[]args){
整数=521;
int len=number<2?1:(int)Math.ceil(Math.log10(number));
int[]temp2=新的int[len];
对于(int i=0,n=number;n>0;n/=10,i++){
temp2[i]=n%10;
System.out.println(temp2[i]);
}
对于(int i:temp2){
系统输出打印(一);
}
System.out.println();
}
输出
1
1
2
2
5
5
125
1
2
5
125
首先,
println
在其输出的末尾打印一个换行符,因此,如果您使用它,您的输出不可能仅在一行上。其次,temp2
是一个int
的数组,如果您要求打印数字,您不能指望println
知道您实际上想要char
s。您可以很容易地找到100关于的文章有0篇。@AlexRudenko这并没有真正解释这种方法的问题所在。这个问题是关于替代方法的。OP使用的一种方法虽然不是最优的,但一旦他们修复了数组的类型就会起作用。String temp1=“”+number;
有效。这不是最佳选择,但这肯定不是问题所在code@FedericoklezCulloca我认为这个问题和数组的字符串值有关,这就是解释的内容。因为数组是int类型的。我并没有提到分配给字符串的int。
1
2
5
125