在java中升序数字的String输入

时间:2016-06-01 06:41:44

标签: java arrays string sorting

我正在开发一个用户可以输入随机数的程序,当用户给-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)
{

}

}
}

3 个答案:

答案 0 :(得分:3)

您正在排序字符串而不是数字。这使您的排序按字典顺序而不是按升序排列。 因此,要解决您的问题,只需添加Integer s而不是String s。您甚至可以使用StringInteger解析为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
  • 循环中不需要else语句。当x为-1时,只需让循环终止。
  • 此外,在while (...);没有做任何事情之后你有一个空块。 do / while循环的while部分没有body。