用于大小写特定排序的 Java 程序

javaobject oriented programmingprogramming

假设您有一个包含大写和小写字符的字符串。我们必须按大小写特定顺序对给定的字符串进行排序,这意味着如果给定字符串中的第 i 个位置有大写字母,则新排序的字符串在该位置必须有大写字母,小写字母也是如此。此外,小写字母和大写字母将分别按顺序排序。

在本文中,我们将尝试找到给定问题的解决方案。首先,让我们通过一个例子来理解给定的问题,以便更好地理解。

示例

String st = "KadbHFGtvc";

假设我们有上述字符串。然后,排序后的字符串将是 −

排序后的字符串:"FabcGHKdtv"

您可以看到原始字符串中的第一个位置有一个大写字母,新排序字符串的第一个字母也有一个大写字母。第 2 到第 4 个字母是小写字母,因此新字符串也有小写字母,但以排序的方式。其他位置的字母也是如此。您可以看到大写和小写字母都是单独排序的。

特定于案例的排序程序

让我们讨论一下我们将遵循的解决这个问题的方法。

算法

  • 步骤 1 - 首先创建一个类"Case",在该类中我们将定义一个名为"sortCase()"的方法,其返回类型为 void,以及一个字符串类型的参数"st"。

  • 步骤 2 - 在 sortCase() 方法中,我们将给定的字符串转换为字符数组并将其存储在"chs[]"中。然后,我们将使用内置方法"Arrays.sort()"对该数组进行排序。此时,在新排序的数组中,以"A"到"Z"开头的大写字母排在第一位,然后是小写字母"a"到"z"。

  • 步骤 3 - 接下来,声明并用 -1 初始化两个整数变量"caseUp"和"caseLW",分别存储大写和小写字符。

  • 步骤 4 - 继续创建一个 if 块来检查数组"chs[]"中的第一个元素是否为大写字母。如果是,则将变量"caseUp"设置为 0。

  • 步骤 5 - 创建一个 while 循环,运行至数组"chs[]"的大小。在这个循环中,我们创建另一个 if 块来获取小写字符并将其存储在'caseLw'中。

  • 步骤 6 - 我们知道字符串在 Java 中是不可变的,因此我们需要创建一个 StringBuffer 类的对象'new_st'来存储新更新的字符串。

  • 步骤 7 - 现在创建一个 for 循环,它将运行到给定字符串'st'的大小。在这个循环中,我们将定义一个 if-else 块来比较字符串'st'的大写和小写字符与数组'chs[]'的位置。使用 if 块,我们将从数组'chs[]'中获取小写字符并附加到'new_st'。在 else 块中,我们将获取大写字符并将其附加到"new_st"。

  • 步骤 8 - 在 main 方法中,创建类"Case"的对象"obj"以调用方法"sortCase"。

示例

import java.util.*;
public class Case {
   public void sortCase(String st) {
      // 将字符串转换为字符数组
      char chs[] = st.toCharArray();
      Arrays.sort(chs);
      // 对字符数组进行排序
      int caseUp = -1;
      int caseLw = -1;
      if(chs[0] <= 'Z') {
         caseUp = 0;
      }
      int i = 0;
      while( i < chs.length) {
         if(chs[i] >= 'Z') {
            caseLw = i;
            break;
         }
         i++;
      }
      StringBuffer new_st = new StringBuffer();
      for(int j = 0; j < st.length(); j++) {
         if(st.charAt(j) >= 'Z') {
            new_st.append(chs[caseLw]);
            caseLw += 1;
         } else {
            new_st.append(chs[caseUp]);
            caseUp += 1;
         }
      }
      System.out.print("The new String after sorting: " + new_st.toString());
   }
   public static void main(String[] args) {
      String st = "KadbHFGtvc";
      System.out.println("The given String: " + st);
      Case obj = new Case(); 
      // 对象创建
      obj.sortCase(st);
      // 使用带有参数的对象调用方法
   }
}

输出

The given String: KadbHFGtvc
The new String after sorting: FabcGHKdtv

结论

在本文中,我们讨论了一个 Java 程序来解决给定的问题。我们使用了 Java 的 String、字符数组和 StringBuffer 类的概念。


相关文章