扩展名为: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 + " ");
}
}
}
虽然它显示了正确的答案,但它必须是在最后一个输出数字之后不显示间距。什么是最好的选择?
答案 0 :(得分:1)
您可以创建一个变量空间,并在第一次迭代后使用空格对其进行初始化,如下所示:
String space = "";
for (int m : raha) {
//Your code...
System.out.print(space + largest);
space = " ";
}
答案 1 :(得分:1)
好主意是使用StringBuilder
- 您可以使用方法append()
添加所有largest
,在for循环之后,您可以使用其delete()
方法来摆脱最后一个角色。
答案 2 :(得分:1)
我建议只使用常规的,而不是增强的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);
}
答案 3 :(得分:0)
如果您使用的是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)并省略最后一个索引的空间。
答案 4 :(得分:0)
你可以使用for循环迭代数组并实现简单,如果检查当前迭代是否是最后一次:
if (i == array.length - 1)
System.out.print(element);
else
System.out.print(element + " ");
还有更多不同的方式,这是我记忆中最容易的方法之一。