Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 向数组索引添加字符串值时出错 公共等级aa{ 公共静态void main(字符串[]args){ 整数=521; 字符串temp1=”“+数字; int结果=0; int[]temp2=新int[temp1.length()]; 对于(int i=0;i_Java_Arrays_String_For Loop_Indexing - Fatal编程技术网

Java 向数组索引添加字符串值时出错 公共等级aa{ 公共静态void main(字符串[]args){ 整数=521; 字符串temp1=”“+数字; int结果=0; int[]temp2=新int[temp1.length()]; 对于(int i=0;i

Java 向数组索引添加字符串值时出错 公共等级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

您的问题不是很清楚您是否在征求意见。但是一个查询“当我将该字符串值添加到数组中时,它走错了方向。”

因此,String是引用类型,而数组是int类型。您需要将值从String解析为int


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