我正在开发一个用户可以输入随机数的程序,当用户给-1时,循环将中断并输入的数字将会显示
Example:
Enter a Number: 32
Enter next Number: 1243
Enter next Number: 123
Enter next Number: 76
Enter next Number: -1
Thank You. You have entered 32, 1243, 123, 76
现在无论输入什么号码,它都会按升序显示
----Ascending order -----
[32,76,123,1243]
现在我已完成以下操作,但要获得用户需要输入的确切结果
->0032
->0076
->0123
->1243
然后我得到了确切的结果
[0032, 0076, 0123, 1234]
然后只有我的排序工作正常,否则就像
[ 123, 1243, 32, 72]
现在该如何解决这个问题?
package Testx;
import java.util.Arrays;
import java.util.Scanner;
public class Test7Ctr{
public static void main(String[] args)
{
// TODO Auto-generated method stub
Scanner user = new Scanner(System.in);
String user_input = "";
String holdv="";
String holdvx="";
String ascend="";
//AsveNd(user_input);
try
{
int b =0;
do
{
System.out.print("Enter next number:");
user_input = user.nextLine();
int x= Integer.valueOf(user_input);
if (x != -1)
{
holdv=user_input;
holdvx+=holdv+",";
ascend+=holdv+" ";
b++;
}
else
{
System.out.println("THANK YOU FOR ENTERING= "+holdvx);
break;
}
}
while(b <= 100);
{
}
String[] numbers=ascend.split("\\s");
for(String numb:numbers)
{
int intarray[] = new int[numbers.length];
Arrays.sort(numbers);
//break;
}
System.out.println("---Ascending order---");
System.out.println(Arrays.toString(numbers));
}
catch(Exception e)
{
}
}
}
答案 0 :(得分:3)
您正在排序字符串而不是数字。这使您的排序按字典顺序而不是按升序排列。
因此,要解决您的问题,只需添加Integer
s而不是String
s。您甚至可以使用String
将Integer
解析为Integer.parseInt()
。
此外,每次插入新号码时都无需拨打sort
,但最后只需拨打一次。这会给您的流程增加很多开销。
答案 1 :(得分:0)
你正在排序&#34; Strings&#34;而不是&#34;数字&#34;。将这些输入扫描为数字,将它们放入动态列表(而不是静态大小的数组),然后对数字列表(而不是字符串)进行排序
答案 2 :(得分:0)
您可以使用以下内容进行正确的整数排序:
String[] numbers = ascend.split("\\s");
int intarray[] = new int[numbers.length];
int i = 0;
for (String numb : numbers)
{
// convert the String to an int
intarray[i++] = Integer.parseInt(numb);
}
Arrays.sort(intarray); // sort the int array, not the String array
System.out.println("---Ascending order---");
System.out.println(Arrays.toString(intarray));
旁注:
你的do / while循环最好写成:
int x = 0;
do
{
System.out.print("Enter next number:");
user_input = user.nextLine();
x = Integer.valueOf(user_input);
if (x != -1)
{
holdv = user_input;
holdvx += holdv + ",";
ascend += holdv + " ";
}
} while (x != -1);
System.out.println("THANK YOU FOR ENTERING= " + holdvx);
int b
while (...);
没有做任何事情之后你有一个空块。 do / while循环的while部分没有body。