Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Probleme mit Java 6, der interaktive Programmierkurs
Die Probleme sind code, den ich genau abgeschrieben habe, der bei mir aber nicht funktioniert. Java 1.6, Eclipse 3.1
1. Bei VorlageTest können Variante 1 und Variante 2 nicht aufgelöst werden
Java:
package abstrakte_klassen;
public class VorlageTest {
public static void main(String[] args) {
Vorlage v = new Variante1();
v.add("Guten");
v.add(" Tag");
v.anzeigen();
System.out.println();
v = new Variante2();
v.add("Guten");
v.add(" Tag");
v.anzeigen();
}
}
package abstrakte_klassen;
public abstract class Vorlage {
String s = "";
public void add(String zeichen){
s = s + zeichen;
}
public abstract void anzeigen();
class Variante1 extends Vorlage{
public void anzeigen(){
char[] zeichen = s.toCharArray();
for (int i = 0; i < zeichen.length; i++) {
System.out.print(zeichen[i] + " ");
}
}
}
class Variante2 extends Vorlage{
public void anzeigen(){
System.out.println(s.toUpperCase());
}
}
}
package datum_uhrzeit;
import java.util.*;
public class Datum2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Geben Sie einen Tag ein(drei einzelne Zahlen): ");
int tag = sc.nextInt();
int monat = sc.nextInt();
int jahr = sc.nextInt();
GregorianCalendar gc = new GregorianCalendar(jahr, monat -1, tag);
System.out.printf("Ihr Tag: %1$td.%1$tm.%1$tY%n",gc);
System.out.printf("Der Tag ist ein %1$tA",gc);
}
}
eine abstrakte klasse kann nicht instanziiert werden. Um aber ein Objekt der Inneren Klassen (nested classes) Variante1 und Variante2 zu erzeugen brauchst du eine Instanz der äußeren klasse (Vorlage). Deshalb gibt der Code für mich irgendwie keinen Sinn.
Vielleicht sehe ich das aber auch falsch...
zu zweitens:
Funktioniert bei mir. Vllt vergisst du nur die Eingaben für Monat und Jahr und vermisst bereits nach der Eingabe vom Tag die Ausgabe. Machs mal so:
Java:
Scanner sc = new Scanner(System.in);
System.out.println("Geben Sie einen Tag ein: ");
int tag = sc.nextInt();
System.out.println("Geben Sie ein Monat ein: ");
int monat = sc.nextInt();
System.out.println("Geben Sie ein Jahr ein: ");
int jahr = sc.nextInt();
GregorianCalendar gc = new GregorianCalendar(jahr, monat -1, tag);
System.out.printf("Ihr Tag: %1$td.%1$tm.%1$tY%n",gc);
System.out.printf("Der Tag ist ein %1$tA",gc);
Jepp, das mit der inneren Klasse hast du falsch abgeschrieben. Es sollte so aussehen:
Java:
package abstrakte_klassen;
public abstract class Vorlage {
String s = "";
public void add(String zeichen) {
s = s + zeichen;
}
public abstract void anzeigen();
}
class Variante1 extends Vorlage {
public void anzeigen() {
char[] zeichen = s.toCharArray();
for (int i = 0; i < zeichen.length; i++) {
System.out.print(zeichen[i] + " ");
}
}
}
class Variante2 extends Vorlage {
public void anzeigen() {
System.out.println(s.toUpperCase());
}
}