Hallo zusammen,
ich habe diesen Code für einen Adventskalender und muss folgendes umändern, doch komme ich selbst nicht auf die Lösung:
import java.io.InputStreamReader;
public class App {
static Adventskalender adventskalender = new Adventskalender();
public static void main(String[] args) throws Exception {
System.out.println(adventskalender);
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
while(true) { // Dauerhafte Schleife
int input = Integer.parseInt(reader.readLine());
if(input < 1 || input > 24) {
break; // Unpassende Eingabe bricht Schleife ab
}
System.out.println(); // Platz machen
if(!adventskalender.isTuerchenOffen(input)) {
adventskalender.oeffneTuerchen(input);
System.out.println(Tuerchen.getSpruchByNummer(input));
} else {
System.out.println("Türchen wurde schon geöffnet!");
}
System.out.println();
System.out.println(adventskalender);
}
}
}[/CODE]
[CODE lang="java" title="Adventskalender"]import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class Adventskalender {
Random random = new Random(); // Zufallsobjekt
List<Tuerchen> tuerchen = new ArrayList<>();
public Adventskalender() {
for(int i = 1; i <= 24; i++) {
tuerchen.add(new Tuerchen(i));
}
Collections.shuffle(tuerchen);
}
public List<Tuerchen> getTuerchen() {
return this.tuerchen;
}
public boolean isTuerchenOffen(int nummer) {
for(int i = 1; i <= 24; i++) {
if(tuerchen.get(i - 1).nummer == nummer) {
return tuerchen.get(i - 1).offen;
}
}
return false;
}
public void oeffneTuerchen(int nummer) {
for(int i = 1; i <= 24; i++) {
if(tuerchen.get(i - 1).nummer == nummer) {
tuerchen.get(i - 1).offen = true;
}
}
}
public String toString() {
StringBuilder string = new StringBuilder();
int tempNummer;
for(int i = 1; i <= 24; i++) {
tempNummer = tuerchen.get(i - 1).nummer;
if(tempNummer < 10 && !tuerchen.get(i - 1).offen) {
string.append(" "); // Padding damit der Kalender rechteckig bleibt
}
if(!tuerchen.get(i - 1).offen) {
string.append(tempNummer);
} else {
string.append("xx");
}
if(i % 6 == 0) {
string.append("\n");
} else {
string.append(" ");
}
}
return string.toString();
}
}
[/CODE]
[CODE lang="java" title="Tuerchen"]import java.util.Arrays;
import java.util.List;
public class Tuerchen {
int nummer;
boolean offen;
String spruch;
private static final List<String> sprueche = Arrays.asList(
"Spruch 1",
"Spruch 2",
//....
"Weihnachten
"
);
public Tuerchen(int nummer) {
this.nummer = nummer;
this.offen = false;
}
public static String getSpruchByNummer(int nummer) {
return sprueche.get(nummer - 1);
}
}
[/CODE]
Vielen Dank für Eure Hilfe!!
ich habe diesen Code für einen Adventskalender und muss folgendes umändern, doch komme ich selbst nicht auf die Lösung:
- nicht das ganze Türchenarray in jedem Türchen speichern - einmal im Adventskalender und im Türchen einzelne Sprüche, diese dann bei Erstellung mitgeben.
- die Eingabe in Scanner umwandeln
import java.io.InputStreamReader;
public class App {
static Adventskalender adventskalender = new Adventskalender();
public static void main(String[] args) throws Exception {
System.out.println(adventskalender);
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
while(true) { // Dauerhafte Schleife
int input = Integer.parseInt(reader.readLine());
if(input < 1 || input > 24) {
break; // Unpassende Eingabe bricht Schleife ab
}
System.out.println(); // Platz machen
if(!adventskalender.isTuerchenOffen(input)) {
adventskalender.oeffneTuerchen(input);
System.out.println(Tuerchen.getSpruchByNummer(input));
} else {
System.out.println("Türchen wurde schon geöffnet!");
}
System.out.println();
System.out.println(adventskalender);
}
}
}[/CODE]
[CODE lang="java" title="Adventskalender"]import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class Adventskalender {
Random random = new Random(); // Zufallsobjekt
List<Tuerchen> tuerchen = new ArrayList<>();
public Adventskalender() {
for(int i = 1; i <= 24; i++) {
tuerchen.add(new Tuerchen(i));
}
Collections.shuffle(tuerchen);
}
public List<Tuerchen> getTuerchen() {
return this.tuerchen;
}
public boolean isTuerchenOffen(int nummer) {
for(int i = 1; i <= 24; i++) {
if(tuerchen.get(i - 1).nummer == nummer) {
return tuerchen.get(i - 1).offen;
}
}
return false;
}
public void oeffneTuerchen(int nummer) {
for(int i = 1; i <= 24; i++) {
if(tuerchen.get(i - 1).nummer == nummer) {
tuerchen.get(i - 1).offen = true;
}
}
}
public String toString() {
StringBuilder string = new StringBuilder();
int tempNummer;
for(int i = 1; i <= 24; i++) {
tempNummer = tuerchen.get(i - 1).nummer;
if(tempNummer < 10 && !tuerchen.get(i - 1).offen) {
string.append(" "); // Padding damit der Kalender rechteckig bleibt
}
if(!tuerchen.get(i - 1).offen) {
string.append(tempNummer);
} else {
string.append("xx");
}
if(i % 6 == 0) {
string.append("\n");
} else {
string.append(" ");
}
}
return string.toString();
}
}
[/CODE]
[CODE lang="java" title="Tuerchen"]import java.util.Arrays;
import java.util.List;
public class Tuerchen {
int nummer;
boolean offen;
String spruch;
private static final List<String> sprueche = Arrays.asList(
"Spruch 1",
"Spruch 2",
//....
"Weihnachten
);
public Tuerchen(int nummer) {
this.nummer = nummer;
this.offen = false;
}
public static String getSpruchByNummer(int nummer) {
return sprueche.get(nummer - 1);
}
}
[/CODE]
Vielen Dank für Eure Hilfe!!