Java 如何在单行中打印所有结果
我有一个循环,它给了我一些数字,下面是我的代码Java 如何在单行中打印所有结果,java,loops,Java,Loops,我有一个循环,它给了我一些数字,下面是我的代码 public static void main(String[] args){ for (int i = 1; i < 100 ; i++) { if (i % 15 ==0) { System.out.println("A="+i); } else if (i % 5 == 0 ){ System.out.println("B="+i);
public static void main(String[] args){
for (int i = 1; i < 100 ; i++) {
if (i % 15 ==0) {
System.out.println("A="+i);
}
else if (i % 5 == 0 ){
System.out.println("B="+i);
}
else if (i%3==0){
System.out.println("C="+i);
}
}
}
但我需要这样的结果
C=3
B=5
C=6
C=9
B=10
C=12
A=15
C=18
B=20
C=21
C=24
B=25
C=27
A=30
C=33
B=35
C=36
C=39
B=40
C=42
A=45
C=48
B=50
C=51
C=3,6,9,12...
B=5,10,20...
A=15,30,45...
如果有人能帮助我,我将非常感激
提前感谢要在同一行中打印,请使用而不是println。然后使用
\n
或System.out.println
创建新行
在您的情况下,您必须将As、Bs和Cs存储在一个数组/列表中,以便以后可以访问它们来打印它们。您可以将
存储为、Bs
和Cs
,然后将它们打印出来。您必须存储它们,因为您无法重新打印在控制台中打印的结果
例如,如果每个选项有一个数组:
ArrayList<int> a = new ArrayList<int>();
ArrayList<int> b = new ArrayList<int>();
ArrayList<int> c = new ArrayList<int>();
对于Bs
和Cs
的ArrayList
,此代码将相等(当然,每个ArrayList
的特定部分必须更改)
我希望它会对你有帮助 下面是一个我应该如何做的例子:
HashMap<String, ArrayList<Number>> map = new HashMap<String, ArrayList<Number>>();
map.put("A", new ArrayList<Number>());
map.put("B", new ArrayList<Number>());
map.put("C", new ArrayList<Number>());
for (int i = 1; i < 100; i++) {
if (i % 15 == 0) {
map.get("A").add(i);
} else if (i % 5 == 0) {
map.get("B").add(i);
System.out.println("B=" + i);
} else if (i % 3 == 0) {
map.get("C").add(i);
}
}
for (Entry<String, ArrayList<Number>> entry : map.entrySet()) {
System.out.print(entry.getKey() + "=");
String strResults = Arrays.toString(entry.getValue().toArray());
System.out.print(strResults.substring(1, strResults.length() - 1));
System.out.println();
}
HashMap map=newhashmap();
put(“A”,新的ArrayList());
put(“B”,新的ArrayList());
put(“C”,新的ArrayList());
对于(int i=1;i<100;i++){
如果(i%15==0){
映射。获取(“A”)。添加(i);
}else如果(i%5==0){
映射获取(“B”)。添加(i);
System.out.println(“B=“+i”);
}如果(i%3==0),则为else{
映射获取(“C”)。添加(i);
}
}
for(条目:map.entrySet()){
System.out.print(entry.getKey()+“=”);
String strResults=Arrays.toString(entry.getValue().toArray());
System.out.print(strResults.substring(1,strResults.length()-1));
System.out.println();
}
它可以更通用,但它做它想做的事。使用Java8,您只需创建一个包含所有值的IntStream
,用分组函数对它们进行分区,然后打印它们,类似这样:
Map<Character, List<Integer>> mapped = IntStream.range(0, 100).boxed()
.filter(i -> i % 5 == 0 || i % 3 == 0)
.collect(Collectors.groupingBy(
i -> {
if (i % 15 == 0) return 'A';
else if (i % 5 == 0) return 'B';
else if (i % 3 == 0) return 'C';
return null;
})
);
mapped.forEach((k,v) -> System.out.println(k+"= "+v.stream().map(Object::toString).collect(Collectors.joining(", "))));
第一部分生成一个包含范围[0100)
中所有数字的流,然后过滤掉不能被5或3整除的所有数字,然后通过groupingBy根据其除数对其进行除数
第二部分只是遍历所有列表并打印它们。下面是一个使用Java 8流的解决方案:
System.out.println("A = " + modList(3));
System.out.println("B = " + modList(5));
System.out.println("C = " + modList(15));
private String modList(int mod) {
return IntStream.range(1, 100).filter(n -> n % mod == 0).boxed()
.collect(Collectors.joining(", ")));
}
或者是一种更通用的解决方案,它可以在一次过程中为所需的任意多个模创建映射:
List<Integer> modList = Arrays.asList(3, 5, 15);
Map<Integer, List<Integer>> modMap = modList.stream()
.collect(Collectors.toMap(Function.identity(), ArrayList::new));
IntStream.range(1, 1000).forEach(n -> modList.stream().filter(mod -> n % mod == 0)
.forEach(mod -> modMap.get(mod).add(n)));
System.out.println("A = " + modMap.get(3).stream().collect(Collectors.joining(","));
...
List modList=Arrays.asList(3,5,15);
Map modMap=modList.stream()
.collect(Collectors.toMap(Function.identity(),ArrayList::new));
IntStream.range(11000).forEach(n->modList.stream().filter(mod->n%mod==0)
.forEach(mod->modMap.get(mod.add(n));
System.out.println(“A=“+modMap.get(3.stream().collect(collector.joining)(,”)”);
...
您需要将所有As、Bs和Cs收集到列表中,而不是边走边打印出来。您知道怎么做吗?您将i%15==0
的所有i
存储到一个字符串中-sA
,i%5==0
的i
存储到sB
中,将i%3==0
的所有存储到第三个字符串中sC
-最后打印这三个字符串。感谢您的支持support@Louis@AbhiPlease不要为一个没有表现出努力的OP提供代码编写服务。向下投票者:你能解释一下我的答案有什么错吗?我想了解我的错误。你的mapToObj
可以被boxed
替换,看到了吗在我看来,ms更明确一点。
A= 0, 15, 30, 45, 60, 75, 90
B= 5, 10, 20, 25, 35, 40, 50, 55, 65, 70, 80, 85, 95
C= 3, 6, 9, 12, 18, 21, 24, 27, 33, 36, 39, 42, 48, 51, 54, 57, 63, 66, 69, 72, 78, 81, 84, 87, 93, 96, 99
System.out.println("A = " + modList(3));
System.out.println("B = " + modList(5));
System.out.println("C = " + modList(15));
private String modList(int mod) {
return IntStream.range(1, 100).filter(n -> n % mod == 0).boxed()
.collect(Collectors.joining(", ")));
}
List<Integer> modList = Arrays.asList(3, 5, 15);
Map<Integer, List<Integer>> modMap = modList.stream()
.collect(Collectors.toMap(Function.identity(), ArrayList::new));
IntStream.range(1, 1000).forEach(n -> modList.stream().filter(mod -> n % mod == 0)
.forEach(mod -> modMap.get(mod).add(n)));
System.out.println("A = " + modMap.get(3).stream().collect(Collectors.joining(","));
...