java中字符串排序,String 转化为int比较大小

引入题目

题目描述

设有nnn个正整数(n≤20)(n≤20)(n≤20),将它们联接成一排,组成一个最大的多位整数。

例如:n=3时,3个整数13,312,343联接成的最大整数为:343312133

又如:n=4时,4个整数7,13,4,246联接成的最大整数为:7424613

输入格式

第一行,一个正整数n。

第二行,n个正整数。

输出格式

一个正整数,表示最大的整数

------------------------------------------------------------解题思路----------------------------------------------------------

题目中要将给出的数字拼接在一起要得到最大的一个数,我们可以想到string中,str1=“12”;str2=“34”;则str1+str2=“1234”,所以我们可以直接将两个值进行string相加再比较是那种相加得到的值最大,依次将得到的最大的数放到最前面,循环到最后一个,即可以得到结果。在问题中有一个问题,java中的string不能像c++那样直接字符串相加减就可以得到结果进行比较,还需要将String转化成int进行比较,所以有以下两种方法

1:int x=Integer.parseInt(str1);使用Integer类中的parseInt()方法;

2:int y=Integer.valueOf(str2).intValue();使用Integer类中的valueOf()方法的intValue()方法;

----------------------------------------------代码---------------------------------------------------------------

package 洛谷;

import java.util.Scanner;

/*题目描述

设有nnn个正整数(n≤20)(n≤20)(n≤20),将它们联接成一排,组成一个最大的多位整数。

例如:n=3n=3n=3时,333个整数131313,312312312,343343343联接成的最大整数为:343312133433121334331213

又如:n=4n=4n=4时,444个整数777,131313,444,246246246联接成的最大整数为:742461374246137424613*/

public class P1012之前标号错了 {

public static void main(String[] args) {

Scanner sc=new Scanner(System.in);

while(sc.hasNext()) {

int n=sc.nextInt();

String a[]=new String[n];

for(int i=0;i

a[i]=sc.next();

}

for(int i=0;i

for(int j=i+1;j

int x=Integer.parseInt(a[i]+a[j]);

int y=Integer.parseInt(a[j]+a[i]);

if(x-y<0) {

String temp=a[i];

a[i]=a[j];

a[j]=temp;

}

}

}

for(int i=0;i

System.out.print(a[i]);

}

System.out.println();

}

}

}


----------------------------------------------------完结------------------------------------------------

你可能感兴趣的:(java中字符串排序,String 转化为int比较大小)