java-forum.org - Java programmieren aus Leidenschaft
Java 6 Einstieg und professioneller Einsatz
Alter Preis: 34,90 EUR
Jetzt: 0,00 EUR

zzgl. Versandkosten

Zurück   java-forum.org - Java programmieren aus Leidenschaft > Java - Programmierung > Java Basics - Anfänger-Themen

Java Basics - Anfänger-Themen Fragen ausschließlich zu Java-Grundlagen von Ein- und Umsteigern

Antwort     Ist dieses Thema erledigt?
Themen-Optionen Thema durchsuchen Ansicht
Alt 20.08.2012, 11:20   #1 (permalink)
Benutzer
short
 
Benutzerbild von HoloYoitsu
 
Registriert seit: 11.07.2012
Fachbeiträge: 29
Abgegebene Danke: 2
Erhielt 0 Danke für 0 Beiträge
Standard args-Parameter durchschleifen (Schnittstelle erweitern?)

Hallo liebe Community, ein Problem das sich leider nicht googlen lässt und dessen Lösung mir fern liegt. Konnte leider auch hier im Forum nichts ähnliches finden.
Mein Vorhaben besteht daraus die Parameter aus der Shell einzulesen und dann im Programm zu verwenden.
(Parameter 1: Dateipfad, Parameter 2: Dateiname)

Klingt einfach, aber...



hier mal die wichtigsten Programmteile:

Java Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
    public static void main(String[] args)
    {
        try
        {
            // Calling the method xxx
            KinoBuchungsSystem kbsc = new KinoBuchungsSystem();
            kbsc.hauptSchleife(args);

Java Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
    public void hauptSchleife(String[] args)
    {
        KinoBuchungsSystemCore kbsc = new KinoBuchungsSystemCore();
 
        IConfiguration configloader = new NewConfigurationReaderFromFile(args);
        KinoConfiguration config = configloader.loadKinoKonfiguration();

Java Code: Quelltext in neuem Fenster öffnen
1
2
3
5
6
7
public class NewConfigurationReaderFromFile(String[] args) implements IConfiguration
{
 
    String m_user = System.getProperty("user.name");
    String m_filename = "/" + args[1]; // "KinoConfig.txt";
    String m_path = args[0]; // "C:/Users/" + m_user + "/Documents/" + m_filename;

Und hier die dazugehörige Schnittstelle (muss warscheinlich erweitert werden???)
Java Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
public interface IConfiguration()
{
 
    public static final String ERROR = "Buchungsfehler";
    public static final String PARKETT = "Parkett";
    public static final String RANG = "Rang";
    public static final String LOGE = "Loge";
 
    public KinoConfiguration loadKinoKonfiguration();
 
}

Geändert von HoloYoitsu (20.08.2012 um 11:25 Uhr)
HoloYoitsu ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 20.08.2012, 11:25   #2 (permalink)
Java-Forum Team
Moderator
 
Benutzerbild von SlaterB
 
Registriert seit: 13.11.2005
Fachbeiträge: 31.608
Abgegebene Danke: 0
Erhielt 2.564 Danke für 2.525 Beiträge
die ganzen Klassen und das Interface scheinen ohne Bedeutung,
die Frage ist allein, ob im args-Array was drinsteht, testweise schon in der main zu untersuchen,

was drinsteht oder fehlt, schreibst du nicht, es ist keine richtige Frage erkennbar,
ein genauer java-Aufruf in Wortlaut wäre auch hilfreich
__________________
Hansa wird Meister.
SlaterB ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 20.08.2012, 11:27   #3 (permalink)
Stammbenutzer
Viertel Gigabyte
 
Benutzerbild von faetzminator
 
Registriert seit: 05.01.2007
Fachbeiträge: 4.898
Abgegebene Danke: 57
Erhielt 542 Danke für 523 Beiträge
Du meinst auf public KinoConfiguration loadKinoKonfiguration(File file); erweitert werden? Könnte auch im Konstruktor angegeben werden, tangiert dann die Schnittstelle nicht (muss ja nicht zwingend aus einem File sein).
Warum gibst du den Filenamen und den Pfad überhaupt in zwei unterschiedlichen Argumenten mit?
Irgendwie so geht das super:
Java Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
if (args.length < 1) {
    throw new IllegalArgumentException("file path missing");
}
File file = new File(args[0]);
if (!file.exists()) {
    throw new ...();
}
// ...
__________________
Ich bin keine Signatur, ich headbang hier nur!
faetzminator ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 20.08.2012, 11:29   #4 (permalink)
Benutzer
short
Themenstarter
 
Benutzerbild von HoloYoitsu
 
Registriert seit: 11.07.2012
Fachbeiträge: 29
Abgegebene Danke: 2
Erhielt 0 Danke für 0 Beiträge
Zitat: SlaterB
Beitrag anzeigen
die ganzen Klassen und das Interface scheinen ohne Bedeutung,
die Frage ist allein, ob im args-Array was drinsteht, testweise schon in der main zu untersuchen,

was drinsteht oder fehlt, schreibst du nicht, es ist keine richtige Frage erkennbar,
ein genauer java-Aufruf in Wortlaut wäre auch hilfreich

im args-Array stehen exakt die richtigen Strings, jedoch kann ich dank dutzender Fehlermeldungen nicht mal compilieren. Fehlercode ist auch eher kryptischer Natur. Einzig "relativ" sinnvolle Hilfe ist nur der "- Type mismatch: cannot convert from NewConfigurationReaderFromFile to
IConfiguration" -error in der KinoBuchungsSystem- Methode alles andere wird als Syntax fehler dargestellt.

Zitat: SlaterB
Beitrag anzeigen
was drinsteht oder fehlt, schreibst du nicht
Übergebene Parameter stehen als Kommentar hinter der stelle an der sie ausgelesen werden
Nur dass die Membervariable m_user durch die Eingabe ersetzt wird.
Java Code: Quelltext in neuem Fenster öffnen
1
2
3
    String m_user = System.getProperty("user.name");
    String m_filename = "/" + args[1]; // "KinoConfig.txt";
    String m_path = args[0]; // "C:/Users/" + m_user + "/Documents/" + m_filename;

Geändert von HoloYoitsu (20.08.2012 um 11:38 Uhr)
HoloYoitsu ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 20.08.2012, 11:34   #5 (permalink)
Benutzer
short
Themenstarter
 
Benutzerbild von HoloYoitsu
 
Registriert seit: 11.07.2012
Fachbeiträge: 29
Abgegebene Danke: 2
Erhielt 0 Danke für 0 Beiträge
Zitat: faetzminator
Beitrag anzeigen
Du meinst auf public KinoConfiguration loadKinoKonfiguration(File file); erweitert werden? Könnte auch im Konstruktor angegeben werden, tangiert dann die Schnittstelle nicht (muss ja nicht zwingend aus einem File sein).
Warum gibst du den Filenamen und den Pfad überhaupt in zwei unterschiedlichen Argumenten mit?
Irgendwie so geht das super:
Java Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
if (args.length < 1) {
    throw new IllegalArgumentException("file path missing");
}
File file = new File(args[0]);
if (!file.exists()) {
    throw new ...();
}
// ...

die zwei Argumente sind quasi "Kundenwunsch" xD
und das mit dem File muss zwingenderweise wegen der Möglichkeit leichter Änderungen für den Anwender sein. Steht von Kinoname bis über Sitzplätze und Reihenanzahlen alles ganz übersichtlich und leicht erweiterbar drin
HoloYoitsu ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 20.08.2012, 11:38   #6 (permalink)
Stammbenutzer
CD-R 80
 
Registriert seit: 17.02.2009
Fachbeiträge: 7.116
Abgegebene Danke: 7
Erhielt 1.105 Danke für 1.103 Beiträge
Zitat: HoloYoitsu
Beitrag anzeigen
ijedoch kann ich dank dutzender Fehlermeldungen nicht mal compilieren. Fehlercode ist auch eher kryptischer Natur. Einzig "relativ" sinnvolle Hilfe ist nur der "- Type mismatch: cannot convert from NewConfigurationReaderFromFile to
IConfiguration" -error in der KinoBuchungsSystem- Methode alles andere wird als Syntax fehler dargestellt.
Bei vielen "kryptischen" Fehlern, liegt meistens ein "Grammatikfehler" im Code vor, Klammer, Strichpunkt falsch oder gar nicht gesetzt...
Wenn's zu unübersichtlich wird hilft oft nur "zurück zum Start" bzw. abschnittsweiser Rückbau bis sich der Code wieder komplilieren lässt.
Michael... ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 20.08.2012, 11:38   #7 (permalink)
Java-Forum Team
Moderator
 
Benutzerbild von SlaterB
 
Registriert seit: 13.11.2005
Fachbeiträge: 31.608
Abgegebene Danke: 0
Erhielt 2.564 Danke für 2.525 Beiträge
programmiere doch nicht so viele Klassen auf einmal, soweit nicht direkte Abhängigkeiten bestehen,
was z.B. ohne Methoden am Anfang immer der Fall ist (*)

> public interface IConfiguration()
hier sind die runden Klammern überflüssig

-> (*) erst
Java Code: Quelltext in neuem Fenster öffnen
1
2
public interface IConfiguration {
}
erfolgreich kompilieren lassen, dann gehts weiter

------

> public class NewConfigurationReaderFromFile(String[] args) implements IConfiguration

genau wieder runde Klammern weg, Parameter noch mehr,
wenn du einen Konstruktor definieren willst, weißt du hoffentlich was zu tun ist,
der Code danach muss auch in eine Methode oder Konstruktor, nicht direkt in die Klasse

-> (*) erst
Java Code: Quelltext in neuem Fenster öffnen
1
2
public iclass NewConfigurationReaderFromFile {
}
erfolgreich kompilieren lassen, dann gehts weiter
- implements IConfiguration anfügen, gehts noch?
- String[] args versuchen, totale Fehler? dann gleich überlegen, wozu noch Codezeilen darin
usw.
__________________
Hansa wird Meister.
SlaterB ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 20.08.2012, 11:50   #8 (permalink)
Benutzer
short
Themenstarter
 
Benutzerbild von HoloYoitsu
 
Registriert seit: 11.07.2012
Fachbeiträge: 29
Abgegebene Danke: 2
Erhielt 0 Danke für 0 Beiträge
Zitat: SlaterB
Beitrag anzeigen
programmiere doch nicht so viele Klassen auf einmal, soweit nicht direkte Abhängigkeiten bestehen,
was z.B. ohne Methoden am Anfang immer der Fall ist (*)
Die einzelnen Klassen sind Seitenlang, sind also nur Abschnitte des Programms

Zitat: SlaterB
Beitrag anzeigen
> public interface IConfiguration()
hier sind die runden Klammern überflüssig
Klammern sind weg xD (kamen noch von Rumprobieren mit Übergabeparametern von grad eben, sry)



Zitat: SlaterB
Beitrag anzeigen


> public class NewConfigurationReaderFromFile(String[] args) implements IConfiguration

genau wieder runde Klammern weg, Parameter noch mehr,
wenn du einen Konstruktor definieren willst, weißt du hoffentlich was zu tun ist,
der Code danach muss auch in eine Methode oder Konstruktor, nicht direkt in die Klasse
damit wieder zum alten Problem, wie schleife ich die Argumente dann durch? Müsste doch eigentlich bereits beim Aufruf der Klasse mitgegeben werden, oder?

Zitat: SlaterB
Beitrag anzeigen

-> (*) erst
Java Code: Quelltext in neuem Fenster öffnen
1
2
public iclass NewConfigurationReaderFromFile {
}
Programm ist voll Funktionsfähig und fehlerfrei, es geht lediglich um die Erweiterung durch die Übergabeparameter (die dann in den args stehen)

Zitat: SlaterB
Beitrag anzeigen
erfolgreich kompilieren lassen, dann gehts weiter
Befinde mich grad am Punkt "weiter"

Zitat: SlaterB
Beitrag anzeigen

- implements IConfiguration anfügen, gehts noch?
- String[] args versuchen, totale Fehler? dann gleich überlegen, wozu noch Codezeilen darin
usw.
Ja, geht gut
ps.: ich programmiere noch nicht mal seid nem Jahr, und ich denke mal so geht das mit Parametern?

Java Code: Quelltext in neuem Fenster öffnen
1
String[] /*Datentyp deklarieren*/ args /*variablenname*/
- wo ist das problem? Ö.ö
HoloYoitsu ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 20.08.2012, 11:52   #9 (permalink)
Stammbenutzer
Viertel Gigabyte
 
Benutzerbild von faetzminator
 
Registriert seit: 05.01.2007
Fachbeiträge: 4.898
Abgegebene Danke: 57
Erhielt 542 Danke für 523 Beiträge
Du speicherst dir einfach die Datei, welche im Konstruktor übergeben wird:
Java Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
12
public class NewConfigurationReaderFromFile implements IConfiguration {
    
    private final File file;
 
    public NewConfigurationReaderFromFile(File file) {
        this.file = file;
    }
 
    public KinoConfiguration loadKinoKonfiguration() {
        // mach irgendwas mit file...
    }
}
__________________
Ich bin keine Signatur, ich headbang hier nur!
faetzminator ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 20.08.2012, 11:53   #10 (permalink)
Java-Forum Team
Moderator
 
Benutzerbild von SlaterB
 
Registriert seit: 13.11.2005
Fachbeiträge: 31.608
Abgegebene Danke: 0
Erhielt 2.564 Danke für 2.525 Beiträge
wenn du deine Klassen nicht postest sondern nur unbekannte Ausschnitte und auch keine Fehlermeldung,
ist es eben eine Raterei, was dein Problem ist

wie gesagt, in deiner Antwort nicht ganz deutlich geworden ob bekannt,
kannst du (String[] args) nicht in die Klassendefinition schreiben, sondern musst einen Konstruktor schreiben

ich erspare mir Beispiele, entweder bekannt oder nachzuschlagen,

ansonsten: Code, Fehlermeldungen, IRGENDWAS
__________________
Hansa wird Meister.
SlaterB ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 20.08.2012, 11:53   #11 (permalink)
Benutzer
short
Themenstarter
 
Benutzerbild von HoloYoitsu
 
Registriert seit: 11.07.2012
Fachbeiträge: 29
Abgegebene Danke: 2
Erhielt 0 Danke für 0 Beiträge
Zitat: Michael...
Beitrag anzeigen
Bei vielen "kryptischen" Fehlern, liegt meistens ein "Grammatikfehler" im Code vor, Klammer, Strichpunkt falsch oder gar nicht gesetzt...
Wenn's zu unübersichtlich wird hilft oft nur "zurück zum Start" bzw. abschnittsweiser Rückbau bis sich der Code wieder komplilieren lässt.
Dummerweise kann ich jeden meiner Schritte rekonstruieren, also an Syntaxfehlern liegts sicher nicht, habe bis jetzt quasi nur die Argumente aus der Main durchgeschleift.
HoloYoitsu ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 20.08.2012, 11:54   #12 (permalink)
Stammbenutzer
CD-R 80
 
Registriert seit: 17.02.2009
Fachbeiträge: 7.116
Abgegebene Danke: 7
Erhielt 1.105 Danke für 1.103 Beiträge
Zitat: HoloYoitsu
Beitrag anzeigen
also an Syntaxfehlern liegts sicher nicht
Auch runde Klammern an Stellen, an denen sie nicht hingehören gehören zur Syntax
Michael... ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 20.08.2012, 11:56   #13 (permalink)
Benutzer
short
Themenstarter
 
Benutzerbild von HoloYoitsu
 
Registriert seit: 11.07.2012
Fachbeiträge: 29
Abgegebene Danke: 2
Erhielt 0 Danke für 0 Beiträge
Zitat: Michael...
Beitrag anzeigen
Auch runde Klammern an Stellen, an denen sie nicht hingehören gehören zur Syntax
Die sind schon weg, war ein "Leichtsinnsfehler vom zu schnell machen" xD
HoloYoitsu ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 20.08.2012, 12:01   #14 (permalink)
Benutzer
short
Themenstarter
 
Benutzerbild von HoloYoitsu
 
Registriert seit: 11.07.2012
Fachbeiträge: 29
Abgegebene Danke: 2
Erhielt 0 Danke für 0 Beiträge
An dieser Stelle
Java Code: Quelltext in neuem Fenster öffnen
1
        IConfiguration configloader = new NewConfigurationReaderFromFile(args);

bekomme ich diesen Fehler:

Multiple markers at this line
- The constructor NewConfigurationReaderFromFile(String[]) is undefined
- Type mismatch: cannot convert from NewConfigurationReaderFromFile to
IConfiguration

Ich vermute mal schwer daran könnts liegen, oder?
HoloYoitsu ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 20.08.2012, 12:02   #15 (permalink)
Stammbenutzer
Megabyte
 
Benutzerbild von timbeau
 
Registriert seit: 31.08.2010
Fachbeiträge: 1.227
Abgegebene Danke: 10
Erhielt 120 Danke für 107 Beiträge
Seitenlange Klassen sind auch nicht das Gelbe vom Ei.
Evtl hier mal ansetzen. Das Problem liegt sicherlich nicht am mitnehmen von args[]
__________________
"Geht nicht" ist Keine Fehlermeldung
timbeau ist gerade online  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 20.08.2012, 12:06   #16 (permalink)
Stammbenutzer
CD-R 80
 
Registriert seit: 17.02.2009
Fachbeiträge: 7.116
Abgegebene Danke: 7
Erhielt 1.105 Danke für 1.103 Beiträge
Zitat: HoloYoitsu
Beitrag anzeigen
An dieser Stelle
Java Code: Quelltext in neuem Fenster öffnen
1
        IConfiguration configloader = new NewConfigurationReaderFromFile(args);

bekomme ich diesen Fehler:

Multiple markers at this line
- The constructor NewConfigurationReaderFromFile(String[]) is undefined
Welche Konstruktoren bietet denn die Klasse NewConfigurationReaderFromFile? Einen der eine String Array übernehmen kann gibt es wohl nicht. "Gehört" die Klasse Dir, dann kannst Du den Konstruktor ja selbst definieren, wenn nicht musst Du nach anderen Möglichkeiten (Konstruktoren & Methoden) schauen, um die Werte zu übergeben.
Michael... ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 20.08.2012, 12:08   #17 (permalink)
Benutzer
short
Themenstarter
 
Benutzerbild von HoloYoitsu
 
Registriert seit: 11.07.2012
Fachbeiträge: 29
Abgegebene Danke: 2
Erhielt 0 Danke für 0 Beiträge
Vielleicht kann ich euch so noch helfen:

wenn ich die args-parameter aus den Methodensignaturen nehme (sie also nicht mehr durschleife)

und stattdessen einfach diesen ConfigurationReader benutze:

Java Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package de.dic.kino.config;
 
import de.dic.kino.config.beans.KinoConfiguration;
import de.dic.kino.config.beans.SaalConfiguration;
 
public class ConfigurationReaderFromFile implements IConfiguration
{
 
    KinoConfiguration config = new KinoConfiguration();
 
    /**
     * LADEN, ERZEUGEN einer KinoKonfiguration
     * @return 
     */
    public KinoConfiguration loadKinoKonfiguration()
    {
        /* TODO
         * 
         */
 
        /* Wir erzeugen nur unsere KinoTestKonfiguration, die später von einer anderen 
         * Klasse aus einer Datei gelesen werden soll. 
         * 
         * Hier entseht richtig dumpfer test code !!!!
         * 
         */
        /* Erst das Kino Config Objekt */
        KinoConfiguration kinoconfig = new KinoConfiguration();
        kinoconfig.setName("CineMaXX");
        kinoconfig.setSlogan("Die besten Filme aller Zeiten");
 
        /* Dann die einzelnen Saal Objekte */
        SaalConfiguration saal1 = new SaalConfiguration();
        saal1.setLogeReihen(2);
        saal1.setParkettReihen(2);
        saal1.setRangReihen(2);
        saal1.setSitzeProReihe(6);
 
        kinoconfig.addSaal(saal1);
        /* 1. Kino fertig */
 
        SaalConfiguration saal2 = new SaalConfiguration();
        saal2.setLogeReihen(2);
        saal2.setParkettReihen(5);
        saal2.setRangReihen(5);
        saal2.setSitzeProReihe(20);
 
        kinoconfig.addSaal(saal2);
        /* 2. Kino fertig */
 
        /* eventuell noch weitere bei mehr sälen */
 
        return kinoconfig;
 
    }
 
    public KinoConfiguration getKinoKonfiguration()
    {
        return config;
    }
 
}

Funktioniert das Programm ohne Probleme
HoloYoitsu ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 20.08.2012, 12:10   #18 (permalink)
Benutzer
short
Themenstarter
 
Benutzerbild von HoloYoitsu
 
Registriert seit: 11.07.2012
Fachbeiträge: 29
Abgegebene Danke: 2
Erhielt 0 Danke für 0 Beiträge
Zitat: Michael...
Beitrag anzeigen
Welche Konstruktoren bietet denn die Klasse NewConfigurationReaderFromFile? Einen der eine String Array übernehmen kann gibt es wohl nicht. "Gehört" die Klasse Dir, dann kannst Du den Konstruktor ja selbst definieren, wenn nicht musst Du nach anderen Möglichkeiten (Konstruktoren & Methoden) schauen, um die Werte zu übergeben.

Is meine Klasse, kenne mich allerdings nicht besonders mit Konstruktoren aus. Das gute stück sieht bis jetzt so aus:


Java Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
package de.dic.kino.config;
 
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
 
import de.dic.kino.config.beans.KinoConfiguration;
import de.dic.kino.config.beans.SaalConfiguration;
import de.dic.test.Helper;
 
public class NewConfigurationReaderFromFile(String[] args) implements IConfiguration
{
 
    public final String SAALDELIMITER = "Saal";
    public final String PARAMDELIMITER = ";";
    public final String VALUEDELIMITER = "=";
 
    public final int PARAMNAME = 0;
    public final int PARAMVALUE = 1;
 
    String m_user = System.getProperty("user.name");
    String m_filename = "/" + args[1]; // "KinoConfig.txt";
    String m_path = args[0]; // "C:/Users/" + m_user + "/Documents/" + m_filename;
 
    /**
     * LADEN, ERZEUGEN einer KinoKonfiguration
     * 
     * @return
     */
    public KinoConfiguration loadKinoKonfiguration()
    {
        try
        {
            String sConfig = this.readTextKonfigurationFile(m_path);
            String[] saConfig = Helper.split(sConfig, SAALDELIMITER);
 
            if (saConfig == null || saConfig.length < 1)
            {
                return null;
            }
            KinoConfiguration kinoconfig = this.readKinoConfig(saConfig[0]);
            kinoconfig.setNamedValueParameter(KinoConfiguration.CONFIG_PATH, this.m_path);
 
            for (int i = 1; i < saConfig.length; i++)
            {
                SaalConfiguration saal = this.readSaalConfig(saConfig[i], i);
                if (saal != null)
                {
                    kinoconfig.addSaal(saal);
                }
            }
            return kinoconfig;
 
        }
 
        catch (FileNotFoundException e)
        {
            System.out.println("File not found!");
            e.printStackTrace();
        }
 
        catch (IOException e)
        {
            System.out.println("IO Exception");
            e.printStackTrace();
        }
        catch (Exception e)
        {
            System.out.println("File not found!");
            e.printStackTrace();
        }
        /* vorrübergehend bis throws exception implementiert wurde */
        return null;
    }
 
    /**
     * Auslesen der in der Zeile gegebenen Daten und speichern der Daten in das KinoConfigurations Objekt
     * 
     * @param zeile
     * @return kinoConfig
     */
    private KinoConfiguration readKinoConfig(String zeile)
    {
        if (zeile == null || zeile.trim().isEmpty())
        {
            return null;
        }
        System.out.println(zeile);
        KinoConfiguration kinoConfig = new KinoConfiguration();
 
        // Splitten der zeile mit dem Parameter ";"
        String[] saParameters = Helper.split(zeile, PARAMDELIMITER);
 
        if (saParameters != null)
        {
            for (int i = 0; i < saParameters.length; i++)
            {
                if (!saParameters[i].trim().isEmpty())
                {
                    String[] saValues = Helper.split(saParameters[i], VALUEDELIMITER);
 
                    if (saValues.length >= 2 && !saValues[PARAMNAME].trim().isEmpty() && !saValues[PARAMVALUE].trim().isEmpty())
                    {
                        kinoConfig.setNamedValueParameter(saValues[PARAMNAME], saValues[PARAMVALUE]);
                    }
 
                }
 
            }
        }
 
        return kinoConfig;
    }
 
    /**
     * Create a new SaalConfiguration object from Configuration Line
     * 
     * @param zeile
     * @param iSaalNummer
     * @return saalConfig
     */
    private SaalConfiguration readSaalConfig(String zeile, int iSaalNummer)
    {
        SaalConfiguration saalConfig = new SaalConfiguration();
 
        /**/
 
        if (zeile == null || zeile.trim().isEmpty())
        {
            return null;
        }
        System.out.println(zeile);
 
        // Splitten der zeile mit dem Parameter ";"
        String[] saParameters = Helper.split(zeile, PARAMDELIMITER);
 
        if (saParameters != null)
        {
            for (int i = 0; i < saParameters.length; i++)
            {
                if (!saParameters[i].trim().isEmpty())
                {
                    String[] saValues = Helper.split(saParameters[i], VALUEDELIMITER);
 
                    if (saValues.length >= 2 && !saValues[PARAMNAME].trim().isEmpty() && !saValues[PARAMVALUE].trim().isEmpty())
                    {
                        saalConfig.addNamedValueParameter(saValues[PARAMNAME], saValues[PARAMVALUE]);
                    }
 
                }
 
            }
        }
        /**/
 
        return saalConfig;
 
    }
 
    /**
     * LADEN einer KinoKonfiguration und abspeichern dieser in einen string
     * 
     * @return
     */
    public String readTextKonfigurationFile(String path) throws Exception
    {
        FileReader fr = new FileReader(path);
        BufferedReader br = new BufferedReader(fr);
 
        StringBuffer sb = new StringBuffer();
 
        try
        {
            String sZeile = "";
 
            while ((sZeile = br.readLine()) != null)
            {
                System.out.println(sZeile);
                sb.append(sZeile.trim());
                sb.append(" ");
 
            }
            br.close();
            fr.close();
        }
 
        finally
        {
            if (fr != null)
            {
                fr.close();
                fr = null;
            }
 
            if (br != null)
            {
                br.close();
                br = null;
            }
        }
        return sb.toString().trim();
    }
 
}
HoloYoitsu ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 20.08.2012, 12:10   #19 (permalink)
Stammbenutzer
Floppy Disc
 
Registriert seit: 02.09.2003
Fachbeiträge: 765
Abgegebene Danke: 50
Erhielt 90 Danke für 88 Beiträge
Offenbar gibt es keinen Konstruktor von NewConfigurationReaderFromFile , der einen String[] als Parameter nimmt.

Davon ab sind Membervariablen, die mit m_ beginnen, inzwischen out. *schmunzelt*
Die IDE kann sie dir farblich anders darstellen und ein Variablennamen sollte etwas über die Bedeutung der Variable, nicht aber über ihren Typ oder Speicherort aussagen, da sich beides schon mal eher ändern kann, als die Bedeutung (wenn sich die ändert, sollte man die Variable dann besser umbenennen).
Crian ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 20.08.2012, 12:15   #20 (permalink)
Benutzer
short
Themenstarter
 
Benutzerbild von HoloYoitsu
 
Registriert seit: 11.07.2012
Fachbeiträge: 29
Abgegebene Danke: 2
Erhielt 0 Danke für 0 Beiträge
Zitat: Crian
Beitrag anzeigen
Offenbar gibt es keinen Konstruktor von NewConfigurationReaderFromFile , der einen String[] als Parameter nimmt.

Davon ab sind Membervariablen, die mit m_ beginnen, inzwischen out. *schmunzelt*
Die IDE kann sie dir farblich anders darstellen und ein Variablennamen sollte etwas über die Bedeutung der Variable, nicht aber über ihren Typ oder Speicherort aussagen, da sich beides schon mal eher ändern kann, als die Bedeutung (wenn sich die ändert, sollte man die Variable dann besser umbenennen).
Danke für den Tipp, aber während ich noch Lerne bin ich erstmal froh, dass ich sie von normalen Variablen unterscheiden kann

ps.: ich merk grad ich muss mich definitiv nochmal über Konstruktoren schlau machen, kann mir jemand was empfehlen? hab ansonsten nur das buch Java ist auch eine Insel hier vor mir liegen
HoloYoitsu ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Antwort     Ist dieses Thema erledigt?

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Ladefortschritt - bietet das diese Quelltextvorlage? Rex Allgemeine Java-Themen 9 05.10.2006 18:28
Eine Frage zum Streaming - EDIT Rex Allgemeine Java-Themen 2 28.09.2006 16:36
Ladebalken wird nicht angezeigt. Rex Allgemeine Java-Themen 2 28.09.2006 16:17
Problem mit SAX-Parser characters() Remo XML und Co. 7 18.10.2005 14:46
args und Parameter-Bitte um Hilfe! Miri Hausaufgaben 7 06.06.2005 14:01


Lesezeichen

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:20 Uhr.


Powered by vBulletin® Version 3.8.6 (Deutsch)
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.2
Thanks for Smilies by smilies.4-user.de