尝试对int进行排序时出现Java错误

尝试对int进行排序时出现Java错误,java,Java,您好,我正在尝试对从扫描仪读取的int进行排序,但每次运行它时都会出现错误= package programame; import java.util.Scanner; import java.util.Arrays; public class E100 { public static int ascendente(int a) { String str = Integer.toString(a); String max[] = str.split(""); Arr

您好,我正在尝试对从扫描仪读取的int进行排序,但每次运行它时都会出现错误=

package programame;

import java.util.Scanner;
import java.util.Arrays;

public class E100 {
public static int ascendente(int a) 
{
    String str = Integer.toString(a);
    String max[] = str.split("");
    Arrays.sort(max);
    String str1 = Arrays.toString(max);
    int ascendente = Integer.parseInt(str1);
    return ascendente;
}
public static void main(String args[]) {
    Scanner sc = new Scanner(System.in);
    int intentos = sc.nextInt();
    int x = sc.nextInt();
    System.out.println(ascendente(x));
    }
}

这条线路有毛病

字符串str1=Arrays.toString(最大值)

您正在尝试将数字数组转换为字符串,因此 max=[2]

所以str1=“[2]”

然后把它转换成一个数字

int ascendente=Integer.parseInt(str1)


给出错误::java.lang.NumberFormatException

您试图将数字3467拆分为其十进制组成数字,对其进行排序,然后将数字重新构造为单个字符串:

 Exception in thread "main" java.lang.NumberFormatException: For input string: "[3, 4, 6, 7]"   at
 java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)   at java.lang.Integer.parseInt(Integer.java:580)     at
 java.lang.Integer.parseInt(Integer.java:615)    at
 programame.E100.ascendente(E100.java:18)    at
 programame.E100.main(E100.java:25)

 C:\Users\agn12\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1
问题是
Arrays.toString
返回数组的可读表示形式,格式为“[3,4,6,7]”。显然,这不能被解析为int。您希望得到字符串“3467”

一种更好的方法(从运行时效率和编码的易用性来看)是将字符串拆分为单个字符,而不是一个字符串。然后,您可以对它们进行排序,并使用string的构造函数之一轻松地将它们转换回字符串:

String max[] = str.split("");
Arrays.sort(max);
String str1 = Arrays.toString(max);
代码的其余部分可以保持不变。

异常

char[] max = str.toCharArray();
Arrays.sort(max);
String str1 = new String(max);
表示Java无法按照您的请求将此类字符串转换为Int。 它可以用来读取编译器错误:

ProgramName.E100.ascendente(E100.java:18)位于

programmame.E100.main(E100.java:25)


它告诉您,问题出现在E100.java的方法main的第25行,然后调用方法ascendente,问题出现在第18行,您试图将字符串数组转换为int。

请发布完整的堆栈tracerrays.toString将“[”“]”放在括号中。我尝试了,但给出了错误“char[]无法转换为字符串[]“@A.Gisbert抱歉,max是字符数组,而不是字符串数组。请参阅更正的编辑。
java.lang.NumberFormatException: For input string: "[3, 4, 6, 7]"