FizzBuzz (@Java) von Bokuga Kanga Etasaikyo, der seit 1 Jahr Programmierer ist

Motivation

Es war ein wenig privat und ich war mit verschiedenen Dingen durcheinander, also war ich übrigens motiviert, einen Typen namens Fizz Buzz auszuprobieren, den ich nie richtig gemacht hatte. Erstens habe ich gerade ein Konto registriert und nichts unternommen, also habe ich beschlossen, zunächst etwas zu schreiben. Wenn Sie möchten, bitte Feedback.

Ziel

So unveränderlich wie möglich, vielseitiger Typ.

FizzBuzz-Anforderungen

Ich weiß es nicht sehr gut,

1.3 Wenn es durch 3 teilbar ist, Fizz 2.5 Buzz wenn durch 5 teilbar 3. Wenn Sie beides teilen können, Fizz Buzz (manchmal Fizz Buzz?) 4. Wenn nicht teilbar, die ursprüngliche Nummer

Ich wollte sagen

  1. Beliebige Zeichenfolge, wenn durch n teilbar
  2. Wenn es durch mehrere teilbar ist, kombinieren Sie sie (verbinden Sie sich mit "")
  3. Wenn nicht teilbar, die ursprüngliche Nummer
  4. Inklusive, um die erste und letzte Nummer anzurufen

Ich habe es versucht Quelle unten

FizzBuzzCaller.java


package FizzBuzz;

import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

public class FizzBuzzCaller {
	final private Map<Integer, String> callMap;
	
	FizzBuzzCaller(Map<Integer, String> callMap){
		this.callMap = Collections.unmodifiableMap(new HashMap<>(callMap));
	}
	
	public Map<Integer, String> getCallMap(){
		return callMap;
	}
	
	public List<String> getCallsListOnClosedRange(int start, int end){
		return IntStream.rangeClosed(start, end)
			.mapToObj(n ->
				callMap.entrySet().stream()
				.filter(e -> n % e.getKey() == 0)
				.map(e -> e.getValue())
				.reduce((x, y) -> x +" "+ y)
				.orElse(String.valueOf(n))
			)
			.collect(Collectors.toList());
	}
}

Prüfung

Ich habe das Minus für alle Fälle eingefügt.

CallTest.java


package FizzBuzz;

import java.util.HashMap;
import java.util.Map;

public class CallTest {
	public static void main(String[] arg){
		Map<Integer, String> callMap = new HashMap<>();
		callMap.put(3, "Fizz");
		callMap.put(5, "Buzz");
		callMap.put(-7, "Huss");
		callMap.put(13, "Boss");
		FizzBuzzCaller oneCaller = new FizzBuzzCaller(callMap);
		System.out.println(oneCaller.getCallMap());
		callMap.put(3, "DUZZ");// this does not work
		oneCaller.getCallsListOnClosedRange(-20,100).stream().forEach(System.out::println);
	}
}

Das Ergebnis ist so

console


{3=Fizz, 5=Buzz, -7=Huss, 13=Boss}
Buzz
-19
Fizz
-17
-16
Fizz Buzz
Huss
Boss
Fizz
-11
Buzz
Fizz
-8
Huss
Fizz
Buzz
-4
Fizz
-2
-1
Fizz Buzz Huss Boss
1
2
Fizz
4
Buzz
Fizz
Huss
8
Fizz
Buzz
11
Fizz
Boss
Huss
Fizz Buzz
16
17
Fizz
19
Buzz
Fizz Huss
22
23
Fizz
Buzz
Boss
Fizz
Huss
29
Fizz Buzz
31
32
Fizz
34
Buzz Huss
Fizz
37
38
Fizz Boss
Buzz
41
Fizz Huss
43
44
Fizz Buzz
46
47
Fizz
Huss
Buzz
Fizz
Boss
53
Fizz
Buzz
Huss
Fizz
58
59
Fizz Buzz
61
62
Fizz Huss
64
Buzz Boss
Fizz
67
68
Fizz
Buzz Huss
71
Fizz
73
74
Fizz Buzz
76
Huss
Fizz Boss
79
Buzz
Fizz
82
83
Fizz Huss
Buzz
86
Fizz
88
89
Fizz Buzz
Huss Boss
92
Fizz
94
Buzz
Fizz
97
Huss
Fizz
Buzz

Betrachtung

Referenzierte Seite

Recommended Posts

FizzBuzz (@Java) von Bokuga Kanga Etasaikyo, der seit 1 Jahr Programmierer ist
[Java] Verboten, eine Art von Alphabet zu verwenden FizzBuzz [Bindung]
Lassen Sie uns über die vorübergehende Erfahrung von Java SE 8 Programmer II sprechen