【问题标题】:How to remove a specific character (",") in java?如何在java中删除特定字符(“,”)?
【发布时间】:2021-01-31 07:53:27
【问题描述】:

我基本上想从我的 12 个整数数组中删除最后一个逗号“,”。我的输出类似于{23, 45, 54, 56, 67, 87, 89, 90, 76, 89, 87, 23, } ,而我想删除最后一个逗号和它在逗号之后创建的空格。

示例输出:

{23, 45, 54, 56, 67, 87, 89, 90, 76, 89, 87, 23}

我的任务基本上是使用冒泡排序方法按升序对整数进行排序。我的输出基本上显示了每个阶段的排序和最终排序的数组。我想从每个阶段的排序、最终排序的数组和随机生成的数组中删除最后一个逗号和它创建的空间。我基本上在我的代码中提供了 cmets,这将帮助你找到每一件事。

请不要让这个过于复杂

代码:

// Create a class and method
class Main {
public static void main(String[] args) {

// Clear screen
System.out.print("\033[H\033[2J");
System.out.flush();

// Initialize a int array with the limit of 12
int[] numbers = new int[12];

// Create a statement 
System.out.println("Random Generated Array:");

System.out.print("{");

// Start a for loop to print random numbers
for (int x = 0; x < numbers.length; x++) {
  numbers[x] = (int) (Math.random() * 101); // So that it prints random numbers from 0 to 100 (inclusive)

  // Print out the 12 random numbers
  System.out.print(numbers[x] + ", ");
}
System.out.print("}");

// Create space
System.out.println();
System.out.println();

// Create a statement 
System.out.println("Sorting At Each Stage:");

// Start looping numbers until 12
for (int i = 0; i < numbers.length; i++) {

  // Start looping numbers and comparing it to the "i" values
  for (int j = i; j < numbers.length; j++) {
    if (numbers[j] < numbers[i]) {

      // Swap the positions of the numbers with the variable "temp"
      int temp = numbers[j];
      numbers[j] = numbers[i];
      numbers[i] = temp;
    }

    // Create space
    System.out.println();
    
    // Use a for loop to print numbers at each stage of sorting
    System.out.print("{");
    for (int k = 0; k < numbers.length; k++) {
      System.out.print(numbers[k] + ", ");
    }
    System.out.print("}");
    System.out.println();
  }
}

// Create space
System.out.println();
System.out.println("\nBubble Sorted Array:");
System.out.print("{");

// Use a for loop to print the final sorted numbers in ascending order
for (int a = 0; a < numbers.length; a++) {
  System.out.print(numbers[a] + ", ");
}

System.out.print("}");

// Create space
System.out.println();
System.out.println();
  }
}

【问题讨论】:

  • 使用if 语句查看索引是否为== numbers.length - 1。如果是这样,请不要打印逗号,因为这是数组中的最后一个元素。
  • @ggorlen - 如果只有一个元素怎么办?它仍将打印为{&lt;&lt;num&gt;&gt;, }。还有一点需要考虑????。
  • 不,事实并非如此。如果只有一个元素,则 i == numbers.length - 1 为真,逗号不会打印。

标签: java arrays sorting bubble-sort removing-whitespace


【解决方案1】:

我在您的循环中添加了一个if,如果这是最后一次迭代,请不要添加额外的位。

    // Create a class and method
    class Main {
      public static void main(String[] args) {

        // Clear screen
        System.out.print("\033[H\033[2J");
        System.out.flush();

        // Initialize a int array with the limit of 12
        int[] numbers = new int[12];

        // Create a statement 
        System.out.println("Random Generated Array:");

        System.out.print("{");

        // Start a for loop to print random numbers
        for (int x = 0; x < numbers.length; x++) {
          numbers[x] = (int)(Math.random() * 101); // So that it prints random numbers from 0 to 100 (inclusive)
          if (x == numbers.length) {
            // Print out the 12 random numbers
            System.out.print(numbers[x]);
          } else {
            System.out.print(numbers[x] + ", ")
          }
          System.out.print("}");

          // Create space
          System.out.println();
          System.out.println();

          // Create a statement 
          System.out.println("Sorting At Each Stage:");

          // Start looping numbers until 12
          for (int i = 0; i < numbers.length; i++) {

            // Start looping numbers and comparing it to the "i" values
            for (int j = i; j < numbers.length; j++) {
              if (numbers[j] < numbers[i]) {

                // Swap the positions of the numbers with the variable "temp"
                int temp = numbers[j];
                numbers[j] = numbers[i];
                numbers[i] = temp;
              }

              // Create space
              System.out.println();

              // Use a for loop to print numbers at each stage of sorting
              System.out.print("{");
              for (int k = 0; k < numbers.length; k++) {
                System.out.print(numbers[k] + ", ");
              }
              System.out.print("}");
              System.out.println();
            }
          }

          // Create space
          System.out.println();
          System.out.println("\nBubble Sorted Array:");
          System.out.print("{");

          // Use a for loop to print the final sorted numbers in ascending order
          for (int a = 0; a < numbers.length; a++) {
            System.out.print(numbers[a] + ", ");
          }

          System.out.print("}");

          // Create space
          System.out.println();
          System.out.println();
        }
      }


System.out.println();
System.out.println();
  }
}

【讨论】:

    【解决方案2】:

    您可以在for 循环中使用if 条件来不在最后一个数字上放置逗号:

    // Start a for loop to print random numbers
    for (int x = 0; x < numbers.length; x++) {
      numbers[x] = (int) (Math.random() * 101); // So that it prints random numbers from 0 to 100 (inclusive)
      if(x + 1 == numbers.length)
          //Print out random number with no comma as it's the last
          System.out.print(numbers[x]);
      else
          // Print out the 12 random numbers
          System.out.print(numbers[x] + ", ");
    }
    

    【讨论】:

    • 你为什么要做 x + 1?
    • @User234 这是一种检查您是否处于最后一次迭代的方法。当x == numbers.length 时循环将中断。
    【解决方案3】:

    如果您想了解将数组加入字符串的另一种方法,您可以考虑 Java 8 流附带的功能。

    这会流式传输数组,使用 String::valueOf 将每个元素映射到一个字符串,然后使用分隔符“,”将它们收集在一起。我只是在两端添加一个大括号以使其与您所做的相匹配。

    import java.util.Arrays;
    import java.util.stream.Collectors;
    
    public class so64395137 {
        public static void main(String[] args) {
            int[] numbers = { 23, 45, 54, 56, 67, 87, 89, 90, 76, 89, 87, 23 };
            String strNumbers = "{" + Arrays.stream(numbers)
                    .mapToObj(String::valueOf).collect(Collectors.joining(", "))
                    + "}";
            System.out.println(strNumbers);
        }
    }
    

    打印:

    {23, 45, 54, 56, 67, 87, 89, 90, 76, 89, 87, 23}
    

    【讨论】:

      【解决方案4】:

      如果您想要一种简单的方法,只需创建一个数组来保存数字的字符串值。然后使用String.join() 方法为您完成工作。

      int[] numbers = new int[12];
      String[] strings = new String[numbers.length];
      for (int x = 0; x < numbers.length; x++) {
          numbers[x] = (int) (Math.random() * 101); // So that it prints random numbers from 0 to 100 (inclusive)
          strings[x] = Integer.toString(numbers[x]);
      }
      System.out.printf("{%s}%n",
              String.join(", ", strings));
      

      打印类似的东西

      {3, 11, 24, 83, 36, 58, 22, 27, 43, 12, 30, 79}
      

      【讨论】:

        猜你喜欢
        • 2018-07-27
        • 1970-01-01
        • 2017-04-16
        • 1970-01-01
        • 2012-10-21
        • 2016-05-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多