Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在单行中打印所有结果_Java_Loops - Fatal编程技术网

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(","));
...