在最后一个元素之后删除 space " "
Removing space " " after last element
扩展至:
有人可以给我一个 hint/solution 我怎么能更改代码,所以在最后一个输出数字之后它不会添加 space?
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 + " ");
}
}
}
虽然它显示了正确的答案,但必须是它不会显示最后一个输出数字之后的间距。最好的选择是什么?
您可以创建一个变量 space 并在第一次迭代后用 space 初始化它,如下所示:
String space = "";
for (int m : raha) {
//Your code...
System.out.print(space + largest);
space = " ";
}
好主意是使用 StringBuilder
- 您可以使用方法 append()
来添加所有 largest
并且在 for 循环之后您可以使用它的 delete()
方法来获取去掉最后一个字符。
我建议只使用常规循环,而不是增强的 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);
}
如果你使用的是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)并省略最后一个索引的 space。
您可以使用 for 循环遍历数组并实现简单的 if 检查以查看当前迭代是否是最后一次:
if (i == array.length - 1)
System.out.print(element);
else
System.out.print(element + " ");
还有很多不同的方法,这是我能记住的最简单的方法之一。
扩展至:
有人可以给我一个 hint/solution 我怎么能更改代码,所以在最后一个输出数字之后它不会添加 space?
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 + " ");
}
}
}
虽然它显示了正确的答案,但必须是它不会显示最后一个输出数字之后的间距。最好的选择是什么?
您可以创建一个变量 space 并在第一次迭代后用 space 初始化它,如下所示:
String space = "";
for (int m : raha) {
//Your code...
System.out.print(space + largest);
space = " ";
}
好主意是使用 StringBuilder
- 您可以使用方法 append()
来添加所有 largest
并且在 for 循环之后您可以使用它的 delete()
方法来获取去掉最后一个字符。
我建议只使用常规循环,而不是增强的 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);
}
如果你使用的是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)并省略最后一个索引的 space。
您可以使用 for 循环遍历数组并实现简单的 if 检查以查看当前迭代是否是最后一次:
if (i == array.length - 1)
System.out.print(element);
else
System.out.print(element + " ");
还有很多不同的方法,这是我能记住的最简单的方法之一。