2016-11-15 67 views
-1

如果我有字符串x =“2016”我怎么能把它变成一个int类型的6210?如何将一串数字转换为已排序的整数?

我想

String x = "2016" 
int v = 0; 
for (int k = 0; k < x.length(); k++) { 
    if (v < x.charAt(k) - '0') { 
     v = x.charAt(k) - '0'; 
    } 
} 
v *= 1000; 

但我不知道下一步该怎么做

+5

调用'toCharArray()',对数组进行排序,将其逆转并解析为整数。 – Andreas

+0

我只能用while和while循环 –

+1

好了,调用'toCharArray()',使用你自己的排序代码对数组进行排序,然后从中构建整数值。嗯....这和我的第一条评论几乎一样。或者如果'toCharArray()'不被允许,那么你自己也要做。 – Andreas

回答

0
char[] stringVals = x.toCharArray(); 
int[] results = new int[stringVals.length]; 
for (int i = 0; i < stringVals.length; i++) { 
     try { 
      results[i] = Integer.parseInt(stringVals[i]); 
     } catch (NumberFormatException nfe) { 
      //NOTE: write something here if you need to recover from formatting errors 
     }; 
    } 
Arrays.sort(results); 
String sortedResult = Arrays.toString(results); 
0

试着看一下Integer.parseInt

但你不能使用字符(作为以前的海报在他们的答案中提到),因为char与Integer.parseInt不兼容,只有字符串是。

尝试解析您的字符串到一个数组,像这样:

String[] numbers = x.split(""); 

潜在的解决方案:

String x = "2016"; 

    String[] numbers = x.split(""); 
    Integer[] nums = new Integer[numbers.length]; 
    for (int k = 0; k < numbers.length; k++) { 

     nums[k] = Integer.parseInt(numbers[k]); 
       } 

    Arrays.sort(nums, Collections.reverseOrder()); 
    StringBuilder strNum = new StringBuilder(); 

    for (int num : nums){ 
     strNum.append(num); 
     } 
    int finalInt = Integer.parseInt(strNum.toString()); 
    System.out.println(finalInt); 
0

使用java-8

String reversed = Arrays.stream(x.split("")) 
         .sorted(String.CASE_INSENSITIVE_ORDER.reversed()) 
         .collect(Collectors.joining()); 

int v = Integer.parseInt(reversed); 
0

不是最有效的方式,但它的作品。您只需将字符串分解为单个字符,然后将这些字符转换为整数,然后使用数组对它们进行排序。

String x = "2016"; 
int length=x.length(); 
int[] myarray = new int[length]; 
String a; 

for(int i=0; i<length; i++) 
{ 
    a = ""+x.charAt(i); 
    int num = Integer.parseInt(a); 
    myarray[i]=num; 
} 

for(int i=1; i<length;i++) 
{ 
    int temp=0; 
    if(myarray[i-1] > myarray[i]) 
    { 
     temp = myarray[i-1]; 
     myarray[i-1] = myarray[i]; 
     myarray[i] = temp; 
    } 

} 

该数组现在是升序,然后只是向后打印数组。

for(int i=length-1;i>=0; i--) 
{ 
    System.out.print(myarray[i]); 
} 

希望它有帮助。