尝试对int进行排序时出现Java错误
您好,我正在尝试对从扫描仪读取的int进行排序,但每次运行它时都会出现错误=尝试对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
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]"