3

ユーザー入力整数を(次々に)配列に格納し、整数を降順で表示するプログラムを作成しています。プログラムはまた、ユーザーに文字列を入力し、 を使用して char に変換するように求めますstring.toCharArray()。整数を降順に正しく表示しました。問題は、文字を降順で表示する方法がわからないことです。

これは整数のコードです:

for(i=0;i<nums.length;i++){
        System.out.print("Enter value for index["+i+"] here --> ");
        nums[i]=Integer.parseInt(br.readLine());}

while(pass<nums.length){
        for(i=0;i<(nums.length-pass);i++){
            if(nums[i]<nums[i+1]){
                temp=nums[i];
                nums[i]=nums[i+1];
                nums[i+1]=temp;
            }
        }
        pass++;
}
System.out.println("\n\nThe numbers when sorted descendingly are :\n");
    for(i=0;i<nums.length;i++){
        System.out.println(nums[i]);

これは配列への文字列のコードです。これは私が問題を抱えているところです。プログラムの実行にエラーはありませんが、正しく実行する方法がわかりません。

System.out.print("Input a string");
        String strValue= br.readLine();
        char[] chrValues;
        chrValues=strValue.toCharArray( );

while(flag<chrValues.length){
   for (c=0; c< (chrValues.length- flag); c++){
        if(chrValues[c]<chrValues[i+1]){
         tempo=chrValues[c];
                chrValues[c]=chrValues[c+1];
                chrValues[c+1]= tempo;}
   }
}
 flag++; 
 System.out.println("\n\nThe String when converted in character and sorted descendingly     are :\n");    
    for(c=0;i<chrValues.length;c++){
        System.out.println(chrValues[c]);}

ちなみにflagは配列の一時保管場所として使っていました。

4

2 に答える 2

3

そのための組み込みメソッドがすでにあります:-

    String str = "Rohit";
    char[] arr = str.toCharArray();

    System.out.println(arr);
    Arrays.sort(arr);   // Sort in Ascending order
    System.out.println(arr);

降順の場合、 a を定義してメソッドComparatorに渡すことができます。Arrays.sort()

Arrays#sortArrayUtils#toObjectを使用して、Descending order..

これがどのように機能するかです: -

    String str = "Rohit";
    char[] charArray = str.toCharArray();

    Character[] myCharArr = ArrayUtils.toObject(charArray);

    Arrays.sort(myCharArr, new Comparator<Character>() {

        @Override
        public int compare(Character char1, Character char2) {
            return char2.compareTo(char1);
        }
    });

    for (char val: myCharArr) {
        System.out.print(val);
    }
于 2012-10-09T13:13:54.443 に答える
2

あなたが試すことができます

String str = "AbCdEf";
char[] arr = str.toCharArray();

for(int i = 0; i < arr.length; i++) System.out.print(arr[i]);
System.out.println();

Arrays.sort(arr); // sorted in ascending order

// print them backwards i.e. descending order.
for(int i = arr.length - 1; i >= 0; i--) System.out.print(arr[i]);
System.out.println();

版画

AbCdEf
fdbECA
于 2012-10-09T14:08:42.437 に答える