Seite 2 von 2
Re: Hilfe bei Aufgaben
Verfasst: Sonntag 11. Mai 2014, 14:54
von needphython
hi,
ich bin gerade in der siebten aufgabe. hier muss ich eine if schleife anwenden:
wie erzeuge ich aber eine liste, die die selbe länge hat wie L3? mit range()?
Re: Hilfe bei Aufgaben
Verfasst: Sonntag 11. Mai 2014, 14:58
von darktrym
Indem du range mit mit dem Parameter L3 L4 zuweist?
Ich muss jetzt schnell weg, eine IF-Schleife programmieren.
Re: Hilfe bei Aufgaben
Verfasst: Sonntag 11. Mai 2014, 15:03
von BlackJack
@needphython: Du erzeugst nicht erst eine Liste mit der selben Länge sondern Du erstellst eine Liste mit einem Element für jedes Element aus L3. Dann ist die Liste ja automatisch gleich lang wie L3. Syntaktisch drängt sich bei dieser Aufgabe eine „list comprehension” nahezu auf. Ansonsten fängst Du halt mit einer leeren Liste an, und hängst da die entsprechenden Elemente an.
Wichtig:
http://if-schleife.de/
Re: Hilfe bei Aufgaben
Verfasst: Dienstag 13. Mai 2014, 08:22
von BlackJack
So könnte es in Java aussehen:
Code: Alles auswählen
package de.python_forum.blackjack;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// Aufgabe 1:
List<Double> L1 = new ArrayList<Double>(3);
// Aufgabe 2:
Scanner scanner = new Scanner(System.in);
for (int i = 1; i <= 3; i++) {
System.out.printf("Zahl %d eingeben: ", i);
L1.add(scanner.nextDouble());
}
// Aufgabe 3:
List<Double> L2 = new ArrayList<Double>(L1);
L2.addAll(L1);
assert L2.size() == 2 * L1.size();
System.out.println("L2 = " + L2);
// Aufgabe 4:
List<Double> L3 = L2.subList(0, 2);
//noinspection MagicNumber
L3.add(42.0);
L3.addAll(L1);
assert L3.size() == 2 + 1 + L1.size();
// Aufgabe 5:
L3.set(1, Math.pow(L3.get(1), 2));
// Aufgabe 6:
System.out.println("L3 =");
for (Double x : L3) System.out.println(x);
// Aufgabe 7:
List<Integer> L4 = new ArrayList<Integer>(L3.size());
for (Double x : L3) L4.add((x < 3) ? 1 : 0);
assert L4.size() == L3.size();
System.out.println("L4 = " + L4);
// Aufgabe 8:
for (int i = 0; i < 3; i++) {
int digitCount = L4.size();
System.out.printf(
"Folge von %d 0-1 Werten eingeben:%n", digitCount);
List<Integer> L5 = new ArrayList<Integer>(digitCount);
while (L5.size() < digitCount) {
int j = scanner.nextInt();
if (j != 0 && j != 1) {
System.out.println("Nur 0 oder 1 bitte.");
} else {
L5.add(j);
}
}
assert L5.size() == L4.size();
boolean isEqual = true;
int k;
for (k = 0; k < L4.size(); k++) {
if (!(isEqual = L4.get(k).equals(L5.get(k)))) break;
}
if (isEqual) {
assert L4.equals(L5);
System.out.println("Eingabe ist korrekt.");
break;
} else {
System.out.printf(
"Eingabe stimmt mindestens an Stelle %d nicht.%n", k);
}
}
}
}
Re: Hilfe bei Aufgaben
Verfasst: Dienstag 13. Mai 2014, 12:52
von EyDu
BlackJack hat geschrieben:So könnte es in Java aussehen:
Sind das nicht ein bisschen wenig Klassen?

Re: Hilfe bei Aufgaben
Verfasst: Dienstag 13. Mai 2014, 13:02
von BlackJack
@EyDu: Jetzt wo Du es sagst — vielleicht sollte ich mit einem Interface `Aufgabe` anfangen…

Re: Hilfe bei Aufgaben
Verfasst: Dienstag 13. Mai 2014, 13:08
von Hyperion
Vergiss die Factory dafür nicht!
Wobei ich bei so einer Aufgabe Unittests ja durchaus für sinnvoll hielte... das wäre quasi ideal für TDD

Re: Hilfe bei Aufgaben
Verfasst: Dienstag 13. Mai 2014, 13:45
von snafu
BlackJack hat geschrieben:@EyDu: Jetzt wo Du es sagst — vielleicht sollte ich mit einem Interface `Aufgabe` anfangen…

Jepp, mit zu implementierender ``void solve()``-Methode. Zudem ist ein ``UserInputScanner()`` mit ordentlicher Fehlerbehandlung ja wohl das Mindeste, was man erwarten kann...

Re: Hilfe bei Aufgaben
Verfasst: Dienstag 13. Mai 2014, 13:56
von BlackJack
@snafu: Den `UserInput` als Interface oder abstrakte Klasse braucht man auch damit man sich zwischen konkreten Implementierungen (`BufferedReader` + `parse*()` oder `Scanner`) entscheiden kann.

Re: Hilfe bei Aufgaben
Verfasst: Dienstag 13. Mai 2014, 19:12
von EyDu
Prima, dann ist es jetzt auch schon komplex genug, dass sich die Anfertigung diverser UML-Diagramm lohnt
