【问题标题】:Removing space " " after last element [duplicate]在最后一个元素之后删除空格“”[重复]
【发布时间】:2018-05-17 04:54:50
【问题描述】:

扩展至:Largest array / Comparing arrays (fresh view?)

有人可以给我一个提示/解决方案我如何更改代码,所以在最后一个输出数字之后它不会在它之后添加空格?

import java.io.*;
import java.util.*;
public class Main {
  public static void main(String[] args) {
   Scanner in = new Scanner(System.in);
 int[] productsAndCustomers = Arrays.stream(in.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
 int[] hind = Arrays.stream(in.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray(); 
 int[] raha = Arrays.stream(in.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();

    for (int m : raha) {
        int largest = Integer.MIN_VALUE;
        for (int p : hind) {
            if (p > largest && p <= m) {
                largest = p;
            }
        }
        System.out.print(largest + " ");
    }
  }
}

虽然它显示了正确的答案,但它必须是它不会在最后一个输出数字之后显示那个间距。最好的选择是什么?

【问题讨论】:

    标签: java arrays space


    【解决方案1】:

    您可以创建一个变量空间,并在第一次迭代后用一个空格来初始化它,如下所示:

    String space = "";
    for (int m : raha) {
        //Your code...
        System.out.print(space + largest);
        space = " ";
    }
    

    【讨论】:

      【解决方案2】:

      好主意是使用StringBuilder - 您可以使用方法append() 添加所有largest,在for 循环之后您可以使用其delete() 方法删除最后一个字符。

      【讨论】:

        【解决方案3】:

        我建议只使用常规而不是增强的 for 循环,这样您就可以知道何时检查 raha 数组的最后一个元素。

        试试:

        for(int i = 0; i < raha.length; i++) {
            // Your code
            if(raha[i] != raha.length - 1)
                System.out.println(largest + " ");
            else
                System.out.println(largest);
        }
        

        【讨论】:

          【解决方案4】:

          如果您使用的是 Java 8,那么有一个简单的方法:您可以将它们收集到一个集合中,然后使用 String.join 方法,而不是立即打印结果:

          List<String> results = new ArrayList<>();
          for (int m : raha) {
              int largest = Integer.MIN_VALUE;
              for (int p : hind) {
                  if (p > largest && p <= m) {
                      largest = p;
                  }
              }
              results.add(Integer.toString(largest));
          }
          System.out.println(String.join(" ", results));
          

          如果您不使用 Java 8,那么您将不得不使用一些提供类似 join 方法的第三方库。

          如果您不想收集结果,则必须跟踪索引(因此使用常规 for 循环而不是外部 foreach)并省略最后一个索引的空间。

          【讨论】:

            【解决方案5】:

            您可以使用 for 循环遍历数组并实现简单的 if 检查以查看当前迭代是否为最后一次:

            if (i == array.length - 1)
                System.out.print(element);
            else
                System.out.print(element + " ");
            

            还有很多不同的方法,这是我能记住的最简单的方法之一。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-10-28
              • 2017-03-01
              • 2016-08-26
              • 2017-02-03
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多