Vokabeltrainer in Java

Tom_

Aktives Mitglied
Hallo! Zusammen,

ich werde beruflich gearde umgeschult auf Java und bin gerade mal durch den basiskurs. Jetzt versuche ich mir eine nützliche Aufgabe zu stellen um das Programmierer in Java zu lernen.

Mir schwebt folgendes vor:

Vokabeltrainer in Java

3 Spalten Pinyin / Chin.Zeichen / Deutsch
Einstellbar wieviel Zeilen pro seite Angezeigt werden sollen (default 20)
Schriftgröße, Tabellengröße einstellbar
Anpassbar an anzeigen ( einsatz Tablet-PC )
Über den spalten links zu den Seiten 1,2,3...,n
Jede spalte nach belieben grau abdeckbar
jede zelle einzeln umschaltbar Grau oder Anzeige.
Sortierfunktion für jede Spalte ( zumindest 1 u. 3)
Suchfunktion
Funktion neues Wort hinzufügen zwingend Pinyin/Chin/deutsch
speichern in Datei oder Datenbank?

Wie aufwendig ist das mit Java und wie ist die herangehensweise? Also mit was beginnt man am besten und wo findet man die benötigten komponenten?
Welche Tools ( plugins ) in Eclips braucht man?
Macht es als anfänger überhaupt sinn sich an so ein Programm zu wagen?

lg
Tom
 

Landei

Top Contributor
Das ist "an sich" nicht schwer, aber die Oberflächenprogrammierung (egal ob Swing, SWT oder etwas anderes) ist für Anfänger immer eine Hürde, und es wird oft empfohlen, GUI-Programmierung erst dann zu machen, wenn die eigentliche Sprache einigermaßen sitzt.

Im Prinzip brauchst du:
- eine CVS-artige Datei als "Datenbank", dazu die entsprechende Ein und Ausgabe
- Die Oberfläche. In Swing wäre das ein JFrame mit einer JTable und ein paar JButtons (und / oder Menüs)
- ein paar EventListener, die das Umschalten erledigen

Die Tabelle aufzuteilen ist wahrscheinlich gar nicht nötig: Das Scrollen ist kein Problem, und man kann auch Knöpfe für 20, 50, 100 Sätze nach oben/unten machen. Ich würde eine permanente Suchleiste (die auch nach Wortbestandteilen suchen kann) für sinnvoller halten.

Bevor du fröhlich lospragrammierst würde ich an deiner Stelle mal gucken, was es schon an Open Source bei den Vokabeltrainern gibt, vielleicht ist ja schon etwas dabei, das sich als Basis anbieten würde.
 

Tom_

Aktives Mitglied
Hab mich ein wenig umgeschaut, vokabeltrainer gibt es reichlich aber in einer vollkommen anderen funktinsweise. Möglichwerweise ist das Wort Vokabeltrainer unglückglich gewählt.
Es soll mehr ein E-Vokabelheft werden, im prinzip will ich damit mein Vokabelheft ersetzen und verbessern. Das Heft löst sich bei täglichen gebrauch nämlich auf und ist wirklich unansehlich, die softwarelösung muss eben irgendwie die biegsamen seiten mit denen ich die spalten abdecke ersetzen, also graue balken.

Einen vokabeltrainer der vokabeln abfragt ist eher eine zusatzfunktion für später, da könnte man theoretisch dann auch die chin. zeichen verlinken zu einer erklärung bzw in die nächste eben aus welchen zeichen sich dieses zeichen zusammensetzt und wo es selbst in anderen zeichen vorkommt oder teil eines wortes ist. Aber so komplex dachte ich es mir für die erste version nicht.
 

Landei

Top Contributor
Soweit ich weiß hat Anki so eine Liste im Hintergrund, nur nicht mit "Abdecken". Der "Normalbetrieb" ist aber auch da die üblich Flashcard-Abfrage.

Vielleicht solltest du das Datei-Format so wählen, dass du es auch mit einem Flashcard-Programm gelesen werden kann.

OT: Ich lerne übrigens Japanisch...
 

Tom_

Aktives Mitglied
Bin eh noch am grübeln was ich alles in die datei speichern soll, ein indikationsfeld wird wohl auch noch dazukommen um eine untermenge an wörtern zu definieren die man speziell trainieren will. Auch eine gliederung nach topic zb. Wohnen, Geld, Tiere usw.. wäre nützlich für den praktischen einsatz.

Japanisch.. klingt auch interessant :) , soll leichter sein in der aussprach aber dafür viel mehr wörter haben für unterschiedliche situationen also mehr oder weniger sprachen in der sprache.

Ich werd mir jetzt noch das letzte Modul unserer Basisausbildung geben und dann werde ich mich reinhängen, im moment arbeite ich gerade das java-tut durch um nicht vollkommen ins kalte wasser zu springen.
Der einstieg in PL1, cobol war wesentlich einfacher.

lg
Tom
 

Landei

Top Contributor
Dann solltest du dir überlegen, entweder eine kleine Datenbank zu benutzen (JavaDB ist bei Java schon dabei) oder ein strukturiertes Dokumentenformat zu verwenden (XML, JSON, HAML...). Alles andere hieße, das Rad neu zu erfinden.
 

Tom_

Aktives Mitglied
So jetzt habe ich angefangen, also java macht spaß ist viel lebendiger als am host reinzutippen.

Was es schon kann:

3 Textfelder ( Pinyin, Zeichen, deutsch)
1 Button hinzufügen
1 button vorblättern
1 butten zurückblättern
1 Table 20 zeile 3 Spalten, die die vokabel anzeigt

bei start wird kontrolliert ob ein Vokabelfile da ist wenn ja wird es eingelesen und die ersten 20 angezeigt.
Beim hinzufügen springt man zur letzten seite und sieht die neue Zeile auftauchen.

Jetzt würde ich gern einen Filter einbauen, der soll aber schon beim schreiben reagieren. Habe hier http://www.java-forum.org/java-basics-anfaenger-themen/63260-liste-array-filtern.html schon nachgelesen ist mir aber zu wenig info.

Die daten sind intern in einem ArrayList<BibZeile> abgespeichert und
BibZeile sieht so aus:


Code:
public class BibZeile {

private int  Laufnummer;	
private String PinYin;
private String ChinZeichen;
private String Deutsch;
public void setDeutsch(String deutsch) {
	Deutsch = deutsch;
}
public String getDeutsch() {
	return Deutsch;
}
public void setPinYin(String pinYin) {
	PinYin = pinYin;
}
public String getPinYin() {
	return PinYin;
}
public void setChinZeichen(String chinZeichen) {
	ChinZeichen = chinZeichen;
}
public String getChinZeichen() {
	return ChinZeichen;
}
public void setLaufnummer(int laufnummer) {
	Laufnummer = laufnummer;
}
public int getLaufnummer() {
	return Laufnummer;
}



}

Ich würde jetzt gerne in den textfeldern etwas eingeben und dann buchstabe für buchstabe die neuen ergebnisse in meiner anzeige table anzeigen.
Filter vorerst mal nur auf String deutsch.


würde mich über ein paar tips freuen :)

lg
Tom
 
Zuletzt bearbeitet:

Aldimann

Bekanntes Mitglied
Also ich würde evtl. erstmal das ganze Programmieren ohne Frontend sondern ggf. auf Konsole. Inwiefern das mit Chin. Vok. geht weiß ich nicht, allerdings können die ja später dann einfach noch dazu kommen.

Einfach anfangen später schwieriger werden...

Was ich mir auch gut vorstellen kann ist, wenn du keine Statistiken o.ä. speichern möchtest, das du einfach das ganze über I18N properties machst.
Vorteil wäre du kannst die Abzufragenden Vokabeln relativ einfach in vielen Sprachen relativ problemlos Verwalten.

Ich bin mir allerdings noch nicht sicher wie sauber die Lösung auf diese Art wäre...
 

Tom_

Aktives Mitglied
Befürchte wir habe da unterschiedliche vorstellungen von schwer *g*

hab es gestern noch selbst gelöst über einen keylistener der folgendes aufruft:

Code:
vorhanden=fuerDeutschFilter.get(n).getDeutsch().toLowerCase().indexOf(eingabeDeutsch);
			
			
			if (vorhanden>=0)
			{
				gefiltert.add(fuerDeutschFilter.get(n));
			}

Die anzeige hatte ich schon in einer anderen klasse, das funktioniert schon nur in der gefilterten ausgabe kann ich noch nicht blättern, das versuche ich heute hinzubekommen. :)

lg
Tom
 
Zuletzt bearbeitet:

Tom_

Aktives Mitglied
Würde meine ausgabe gerne nach 2 kriterien sortieren, werde aber mit der gefunden info im internet nicht schlau.

was ich schon kann ist nach einem kriterium:
Code:
public int compareTo(BibZeile o) {
	
//	return ((String)Deutsch).toLowerCase().compareTo((String)o.Deutsch.toLowerCase());
	 return ((Integer)sortierfeld).compareTo((Integer)o.sortierfeld);

}

jetzt hätte ich aber gerne erst nach sortierfeld und dann innerhalb dieser sortierung alpabetisch.

Im sortierfeld steht der int wert an dem der filter den string gefunden hat, je kleiner desto oben, und innerhalb dieser sortierung hätte ich es gern alphabetisch zb.:

wo
wo
was
wie
wann
wer
wessen
wir
wirklich
Wien
Woche
Woche
wohnen
Zwei
Geschwister
ältere Schwester
kleine Schwester
ältere Schwester
jüngere Schwester

sollte so ausschaun:

wann
was
wer
wessen
wie
Wien
wir
wirklich
wo
wo
Woche
Woche
wohnen
Zwei
Geschwister
ältere Schwester
ältere Schwester
kleine Schwester
jüngere Schwester

danke!
lg
Tom
 

Landei

Top Contributor
Java:
int result = ((String)Deutsch).toLowerCase().compareTo((String)o.Deutsch.toLowerCase());
if (result == 0) { //wenn beide gleich sind
	 result = ((Integer)sortierfeld).compareTo((Integer)o.sortierfeld);
}
return result;
 

Tom_

Aktives Mitglied
hallo!

Jetzt fürchte ich beginnt der komplizierte part :) . Für die eingabe der Zeichen wird ein standardtool herhalten müssen, so etwas hat jeder auf seinem rechner der chinesisch benutzt.
Das Problem ist es gibt inputmethoden im internet zu finden aber die müsste man erstens mitschicken und sie bei jedem programmstart wieder aktivieren, ich hätte die methode wenn, dann lieber fix auf dem jtextfeld hängen. Es gibt zwar die methode addinputmethdelistener aber keine wie auch immer geartete verständliche schritt für schritt anleitung wie man so eine methode erstellt.

2. warscheinlich "leichteres" problem bei der pinyin eingabe sollte immer wenn ein selbstlaut eingegeben wird eine auswahl erscheinen welche die entsprechnden töne dazu anbietet zb einggabe "a" auswahl a ā á ǎ à
Welche "java-bausteine" sind dafür am besten geeignet?

lg
Tom
 

noobadix

Bekanntes Mitglied
Von der Variante, die InputMethod durch Java einzustellen rate ich ab, habe damit schlechte Erfahrungen gemacht. Dadurch wird die InputMethod vom Betriebssystem verändert. Der Benutzer muss diese also installiert haben, was bei manchen LinuxSystemen gar nicht so trivial zu machen ist und u.U. hat der Anwender dazu nicht die Berechtigung.

Ideal wäre es, denke ich, wenn du zur Darstellung die passende Font mitliefern und die Eingabe durch ein virtuelles Keybord, also Buttons, realisieren würdest.
 

Tom_

Aktives Mitglied
Ja, denke ich auch. In der reihenfolge der buttons muss dann allerdings noch ein bisschen logik stecken nämlich die häufigsten zeichen zuerst und nicht mehr als 10 also 0-9 auf einmal sprich ein button zum weiterblättern. Die anzeige muss sich auch selbst aktualisieren können also wenn man nur die silbe zb "wo" eintipt ist die auswahl größer als "wo3" .

Die meisten lösungen im netz funktionieren zwar auf ihre weise sind aber weit weg von userfreundlich, das ist einer der schwerpunkte bei meinen programm. Einfach u. Intuitiv dafür eben spezialisiert auf chinesisch.

Das pinyin problemchen habe ich mit einem keylistener gelöst der jetzt eben a1 a2 o3 usw in das lautzeichen verwandelt, das ist auch angenehmer beim schreiben.
In einer fernen ausbaustufe sollen die zeichen automatisch in pinyin übersetzt werden und diese lösung nur noch eine korrekturmöglichkeit sein.

Wobei ich anmerken muss der substring von java ist einfach strange!! *g*
 

Tom_

Aktives Mitglied
Wieder einmal Hallo!

Mein inputfile sieht so aus:
an 安 案 按 廠 暗 岸 黯 俺 闇 鞍 庵 諳 氨 銨 盦 犴 桉 唵 菴 峖 鵪 痷 啽 侒 豻 堷 洝 儑 韽 荌 玵 婩 晻 匼 錌 垵 媕 腤 雸 萻 匎 昂 肮 盎 骯 腌 卬 軮 醠
an1 安 廠 鞍 庵 諳 氨 銨 盦 桉 峖 鵪 痷 侒 韽 垵 媕 腤 萻
an2 啽 玵 雸
an3 俺 銨 唵 堷 晻
an4 案 按 暗 岸 黯 闇 犴 桉 菴 豻 洝 儑 荌 婩 匼 錌 匎
ang 昂 肮 盎 骯 腌 卬 軮 醠
ang1 肮 骯 腌
ang2 昂 卬
ang3 軮
ang4 盎 醠
ao 奧 傲 澳 囂 熬 遨 凹 懊 翱 拗 敖 嗷 坳 鏖 螯 鰲 聱 柪 鼇 獒 廒 襖 鏊 滶 芺 奡 驁 媼 扷 蔜 謷 爊 隞 摮 磝 擙 镺 詏 璈 墺 嶴
ao1 熬 凹 坳 柪
ao2 囂 熬 遨 翱 敖 嗷 鏖 螯 鰲 聱 鼇 獒 廒 滶 蔜 謷 爊 隞 摮 磝 璈
ao3 襖 芺 媼 镺
ao4 奧 傲 澳 懊 拗 坳 鏊 奡 驁 扷 擙 詏 墺 嶴

also jede zeile ein String.

Wie setze ich es am besten um, in erster linie suche ich nach dem ersten teil zb.: ao4 und dann will ich in der zeile ao4 die zeichen einlesen. Das Problem ist, ich kenne die anzahl der zeichen nicht also kann ich jetzt keine classe erstellen, die die struktur abbildet.
Ein einfaches Stringarray reicht auch nicht, da mir nur die index und die equal methode einfällt um einen string zu finden. Bei equals stellt sich das problem, das ich die erste silbe abtrennen müsste in einen eigenen string, bei index, das ich zu viele treffer habe.
Gibt es da eine praktischere variante?

danke
lg
Tom
 

Landei

Top Contributor
Mit String[] array = line.split(" ") bekommst du ein Array der einzelnen Teile. array[0] ist die Aussprache, und den Rest kannst du in eine Liste oder (mit System.arraycopy) in ein neues Array packen. Wo ist das Problem?
 

ARadauer

Top Contributor
Das passendste wäre ein String array aber muss man da nicht die anzahl der elemente angeben?
warum keine ArrayList?

arrays sind halt unflexible... dafür haben wir in java ein paar ganz bequeme collections mit denen man sehr flexibel arbeiten kann..
 

Tom_

Aktives Mitglied
da bin ich auf der leitung gestanden, habe es jetzt erst einmal in ein anderes format gebracht um speicher zu sparen:

an;安案按廠暗岸黯俺闇鞍庵諳氨銨盦犴桉唵菴峖鵪痷啽侒豻堷洝儑韽荌玵婩晻匼錌垵媕腤雸萻匎昂肮盎骯腌卬軮醠
an1;安廠鞍庵諳氨銨盦桉峖鵪痷侒韽垵媕腤萻
an2;啽玵雸
an3;俺銨唵堷晻
an4;案按暗岸黯闇犴桉菴豻洝儑荌婩匼錌匎
ang;昂肮盎骯腌卬軮醠
ang1;肮骯腌
ang2;昂卬
ang3;軮
ang4;盎醠

und dann eine klasse mit zwei strings gemacht die dann als objekt pro zeile in einem arraylist abgelegt wird.

lg
Tom
 

Tom_

Aktives Mitglied
ok, ich hätte gern ein fenster ( Jframe?) das ich mit buttons füllen kann und das sich unter einem textfeld positioniert. Erst wollte ich einen Jframe zu einem Jfram add'en aber das hat er mir verweigert.
Was muss ich verwenden?


danke!
lg
Tom
 

Tom_

Aktives Mitglied
Hab mich jetzt für ein Jpanel entschieden. Dem habe ich alle gewünschten buttons zugewiesen und es zum jframe geadded. Soweit so gut nur ein kleines Problem mit der Aktualisierung des jframes. Die anzeige ändert sich nämlich erst, wenn ich irgendetwas anderes mache in meinem jframe als zb die sichtbarkeit eines buttons ändern.
Mach ich nichts dergleichen bleibt mein jpanel mit den button unsichtbar.

Hab ich einen fehlergemacht oder weiß ich nur was nicht?

lg
Tom
 

Landei

Top Contributor
Manchmal hilft schon, den JPanel fertig zu bestücken, bevor man ihn zum Frame hinzufügt. Falls nicht, kann man mal versuchen, repaint() aufrufen. In Härtefällen vorher noch ein invalidate().
 
J

JohannisderKaeufer

Gast
Das mit dem repaint(), damit hab ich auch immer noch das ein oder andere Problem.

SwingUtilities.updateComponentTree("die zu aktualisierende JComponent"); war bei mir dann oft erfolgreicher.

Wichtig ist auch, das gerade beim aktualisieren von Komponenten(Hinzufügen von neuen Komponenten) darauf geachtet wird, das die Änderungen im Event-Dispatching-Thread ablaufen.
 

Tom_

Aktives Mitglied
ok... hab das thema "Event-Dispatching-Thread" jetzt einmal kurz in wiki überflogen, sieht aus als ob das sowieso alles automatisch in diesem thread läuft, werde ich mir noch genauer durchlesen.
@landei code kommt noch
 

Tom_

Aktives Mitglied
Code:
public static String buttonZeichen;
	public static void buttonErstellen(String chinZeichen) {
		int a = chinZeichen.length();
		buttonZeichen=chinZeichen;
		JButton z1 = null;
		JButton z2 = null;
		JButton z3 = null;
		JButton z4 = null;
		JButton z5 = null;
		JButton z6 = null;
		JButton z7 = null;
		JButton z8 = null;
		JButton vor3 = new JButton(">");
		JButton zurueck3 = new JButton("<");
		GuiHauptseite.zeichenAuswahl.removeAll();
		
		  if (a>=1)
		  {
		    z1 = new JButton("1:"+chinZeichen.substring(0,1));  
		  }
		  if (a>=2)
		  {
		    z2 = new JButton("2:"+chinZeichen.substring(1,2));  
		  }
		  else
		  {
			z2 = new JButton("2: ");  
		  }
		  if (a>=3)
		  {
		    z3 = new JButton("3:"+chinZeichen.substring(2,3));  
		  }
		  else
		  {
			z3 = new JButton("3: ");  
		  }
		  if (a>=4)
		  {
		   z4 = new JButton("4:"+chinZeichen.substring(3,4));  
		  }
		  else
		  {
			z4 = new JButton("4: ");  
		  }
		  if (a>=5)
		  {
		    z5 = new JButton("5:"+chinZeichen.substring(4,5));  
		  }
		  else
		  {
			z5 = new JButton("5: ");  
		  }
		  if (a>=6)
		  {
		    z6 = new JButton("6:"+chinZeichen.substring(5,6));  
		  }
		  else
		  {
			z6 = new JButton("6: ");  
		  }
		  if (a>=7)
		  {
		    z7 = new JButton("7:"+chinZeichen.substring(6,7));  
		  }
		  else
		  {
			z7 = new JButton("7: ");  
		  }
		  if (a>=8)
		  {
		    z8 = new JButton("8:"+chinZeichen.substring(7,8));  
		  }
		  else
		  {
			z8 = new JButton("8: ");  
		  }
		
		vor3.setPreferredSize(new Dimension(13,21));
		zurueck3.setPreferredSize(new Dimension(13,21));
		z1.setPreferredSize(new Dimension(31,21));
		z2.setPreferredSize(new Dimension(31,21));
		z3.setPreferredSize(new Dimension(31,21));
		z4.setPreferredSize(new Dimension(31,21));
		z5.setPreferredSize(new Dimension(31,21));
		z6.setPreferredSize(new Dimension(31,21));
		z7.setPreferredSize(new Dimension(31,21));
		z8.setPreferredSize(new Dimension(31,21));
		vor3.setMargin(new Insets(0,0,0,0));
		zurueck3.setMargin(new Insets(0,0,0,0));
		z1.setMargin(new Insets(0,0,0,0));
		z2.setMargin(new Insets(0,0,0,0));
		z3.setMargin(new Insets(0,0,0,0));
		z4.setMargin(new Insets(0,0,0,0));
		z5.setMargin(new Insets(0,0,0,0));
		z6.setMargin(new Insets(0,0,0,0));
		z7.setMargin(new Insets(0,0,0,0));
		z8.setMargin(new Insets(0,0,0,0));
		vor3.addActionListener(new Vor3ActionListener());
		zurueck3.addActionListener(new Zurueck3ActionListener());
		GuiHauptseite.zeichenAuswahl.add(zurueck3);
		GuiHauptseite.zeichenAuswahl.add(z1);
		GuiHauptseite.zeichenAuswahl.add(z2);
		GuiHauptseite.zeichenAuswahl.add(z3);
		GuiHauptseite.zeichenAuswahl.add(z4);
		GuiHauptseite.zeichenAuswahl.add(z5);		
		GuiHauptseite.zeichenAuswahl.add(z6);
		GuiHauptseite.zeichenAuswahl.add(z7);
		GuiHauptseite.zeichenAuswahl.add(z8);
		GuiHauptseite.zeichenAuswahl.add(vor3);

//an der stelle habe ich das prob eben mit einem sichbarkeitsprofil gelöst 
// die anweisung GuiHauptseite.zeichenAuswahl.repaint();
//hat das panel ganz verschwinden lassen

		ButtonSichtbarkeit.setChinausw();

	}
 
Zuletzt bearbeitet:
G

Gast2

Gast
Du solltest dringend erstmal ein Tutorial durchmachen...

Deine if else sind total fürn arsch in deiner for schleife... Debug da mal durch ;)
früher oder später wird er immer in den 1. teil reingehen so ist dein else überflüssig...
und du instanzierst die buttons dann auch mehrmals...
 
Zuletzt bearbeitet von einem Moderator:

Tom_

Aktives Mitglied
@SirWayne
es kommen immer zwischen 1 und 8 zeichen je nach dem wieviele zeichen noch in der auswahl sind bzw. auch beim blättern muss die anzahl nicht zwingend durch 8 teilbar sein. Für diese fälle steht jetzt einmal blank als text.

Diese methode wird immer mit einem string zwischen 1 u. 8 aufgerufen, die aufteilung erfolgt in den aufrufenden methoden ( beim blättern zum beispiel )

zb.: silbe wo3
bei eingabe w sind es 410 zeichen so sind es beim durchblättern auf der letzten seite nur noch 2 beschriftet + 6 blank
bei wo noch 23 also 1 blanker button
bei wo3 schließlich stehen nur noch 3 zeichen zur auswahl und 5 blank.

Das funktioniert auch bereits einwandfrei, den code kann man auch kürzer schreiben wenn man für die buttonnummer und die substringwerte variablen verwendet.

zu den blankbutton wird dann in folge auch kein aktionlistener geadded ( soweit bin ich noch nicht, arbeite im moment an der auswahl über die tasten 1-8).

Durch das removeall, dachte ich gehen die bestehenden referenzen verloren und der garbage collector kümmert sich um die "toten" objekte. Die neu instanzierten stehen dann wieder im panel.

genaugenommen ist mein ganzes wissen aus dem tutorial und wo mir das tutorial nicht weitergeholfen hat habe ich gegoogelt, was oft wieder zu diesem forum führt.


lg
Tom
 
G

Gast2

Gast
Mach mal ein KSKB wie dein Aufbau ist...

Okay das ist gewollt, dass du leere Buttons anzeigen lassen willst?

Schaur dir mal die Ausgaben an, was deine for schleife macht du machst viel zuviele Buttons...

Java:
public class Test {

	
	
	public static void main(String[] args) {
		int a = 4;
		
		for(int i = 0;i<=8;i++)
		{
		  if (a>=1)
		  {
		   System.out.println("a1");
		  }
		  if (a>=2)
		  {
			  System.out.println("a2");
		  }
		  else
		  {
			  System.out.println("a2 leer");
		  }
		  if (a>=3)
		  {
			  System.out.println("a3");
		  }
		  else
		  {
			  System.out.println("a3 leer");
		  }
		}

	}
	
}
 
Zuletzt bearbeitet von einem Moderator:
G

Gast2

Gast
Und wie gesagt mach mal ein kleine KSKB.
Dabei kommt man meistens schon selber auf den Fehler.
 

Tom_

Aktives Mitglied
Hallo!

mir ist klar wie man einen pfad für ein file angibt, ist es möglich es so zu definieren, dass java das file wie eine klasse behandelt wird und es in einem der packeges stehen kann?
Damit egal wo man das Programm dann am pc hinkopiert oder es verschiebt es das inputfile findet.

lg
Tom
 

Andi_CH

Top Contributor
Das Programm sucht das file dort wo der Pfad hinzeigt - es ist doch egal wohin man das Programm kopiert ???:L

Es sei denn du kopierst das Programm und das File zusammen irgendwohin - dann musst du halt den Pfad nicht absolut (C:/gaga/gugus.file) sondern relativ (../../gaga/gugus.txt) angeben.

(Das hat aber eher mit Betriebssystem als mit Java zu tun)

[EDIT] Wenn du keinen Pfad angibst wird das file im Directory . gesucht.
 

Tom_

Aktives Mitglied
Das findet er mir nicht:
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("PinYinInput2.txt"), "UTF-8"));

die vrzeichnisstruktur sieht so aus:
C:\workspace\JavaTraining\src\fis\th\vokabelheft

Da sind alle packeges drinn und jetzt auch das PinYinInput2.txt file.
Wenn ich es so angebe: C:\workspace\JavaTraining\src\fis\th\vokabelheft findet er es natürlich, aber das bringt es nicht wirklich.

lg
Tom
 

Tom_

Aktives Mitglied
getRessourceAsStream() wird dir da helfen:
getResourceAsStream : Java Glossary

@EikeB

Tur mir leid, verstehe ich nicht.

BufferedReader br = new BufferedReader(new InputStreamReader(this.class.getResourceAsStream( "PinYinInput2.txt" )));
Cannot use this in a static context

Ich weiß dann auch nicht welchen klassennamen ich angeben soll, der packeg name alleine reicht nicht, da will er eine klasse erstellen.
 

Andi_CH

Top Contributor
Und warum bringt es das nicht? Es gibt nun mal nichts anderes als absolute und realtive Pfade

Ein File ist nun mal keine Klasse, sondern ein File - wenn du eine Klasse willst mach eine Klasse und pack deine Daten da rein und lies sie aus.

Aber ich lasse mich gerne davon überzeugen, dass ich mich geirrt habe, wenn es einen anderen Weg gibt.
 

Andi_CH

Top Contributor
@EikeB

Tur mir leid, verstehe ich nicht.

BufferedReader br = new BufferedReader(new InputStreamReader(this.class.getResourceAsStream( "PinYinInput2.txt" )));
Cannot use this in a static context

Ich weiß dann auch nicht welchen klassennamen ich angeben soll, der packeg name alleine reicht nicht, da will er eine klasse erstellen.
Vielleicht musst du es einfach in einen dynamischen Kontext rein tun, dann dürfte es gehen .... aus düftigen Requirementsumschreibungen und Mikrocodeschnipseln ist es immer schwierig etwas herauszufinden ....
 

Tom_

Aktives Mitglied
@landei er nimmt mir das this. nicht.

habe jetzt im netz diese lösung gefunden:
Code:
File chinBib = new File("PinYinInput2.txt");  
				String path = chinBib.getAbsolutePath();  
				BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(path), "UTF-8"));

Die funktioniert jetzt zwar, macht aber 2 probleme.

Beim ausführen mit eclips sucht er unter diesem pfad:
C:\workspace\JavaTraining\PinYinInput2.txt

Beim exportieren in ein ausführbares jar file sucht er hier ( wo ich es ursprünglich wollte):
C:\workspace\JavaTraining\src\fis\th\vokabelheft

ergebnis: in Eclips läuft es aber das exportierte jar-file liest die datei nicht ein.
 

Tom_

Aktives Mitglied
ok! Danke :)

Ist gelöst, das file braucht er im verzeichnis von dem jar file. Das andere problem mit den pfaden hat ein refresh gelöst.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Vokabeltrainer programmieren Allgemeine Java-Themen 4
S vokabeltrainer Allgemeine Java-Themen 10
OnDemand Java Deployment Vaadin Allgemeine Java-Themen 3
D Hat Java eine Library um JavaScript auszuwerten? Allgemeine Java-Themen 2
Zrebna Wieso sind eigentlich JUnit-Tests in src/test/java platziert - nur Konvention? Allgemeine Java-Themen 7
N LlaMA, KI, java-llama.cpp Allgemeine Java-Themen 39
V Java-Codierungsherausforderung: Navigieren durch die Macken der Datumsmanipulation Allgemeine Java-Themen 2
E Output Fehler (Java-Programm Kuchen) Allgemeine Java-Themen 11
M java: unexpected type Allgemeine Java-Themen 2
harrytut Java Input/Output Tests Junit Allgemeine Java-Themen 3
B Java Discord bot auf ein Root Server? Allgemeine Java-Themen 1
BetziTheRealOne Java PKIX path building failed as non Admin Allgemeine Java-Themen 15
D Linux, Java-Version wird nicht erkannt bzw. welche Einstellung fehlt noch? Allgemeine Java-Themen 19
KonradN Java 21 Release Allgemeine Java-Themen 5
V Umgang mit fehlenden Daten in einer Java-Datenanalyseanwendung Allgemeine Java-Themen 5
P Fehler: Hauptklasse Main konnte nicht gefunden oder geladen werden Ursache: java.lang.ClassNotFoundException: Main Allgemeine Java-Themen 24
K Java Anwendung machen Anleitung Allgemeine Java-Themen 5
G java.io.listFiles() Allgemeine Java-Themen 3
8u3631984 Frage zu Java Streams min / max Allgemeine Java-Themen 17
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
K Java-Projekt Allgemeine Java-Themen 11
K Java-Projekt Allgemeine Java-Themen 0
ruutaiokwu Welcher Browser unterstützt heutzutage noch Java Applets? Allgemeine Java-Themen 5
Jose05 Java-Klasse im extra cmd-Fenster ausführen Allgemeine Java-Themen 3
rode45e Java Threads Allgemeine Java-Themen 4
G java.io.listFiles() Allgemeine Java-Themen 2
N Java Dynamic Proxy Allgemeine Java-Themen 3
N Leichte Java Gegner Ki Allgemeine Java-Themen 10
A Java modul Problem Allgemeine Java-Themen 4
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
V Funktionale Schnittstelle in Java Allgemeine Java-Themen 3
OnDemand Java String in Hashmap als Key NULL Allgemeine Java-Themen 27
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
berserkerdq2 Wenn ich bei Intelij javafx mit maven importieren will, muss ich das in die pom.xml reintun, aber warum noch in module-info.java? Allgemeine Java-Themen 3
KonradN Java 20 am 21. März Allgemeine Java-Themen 1
O Java Website Stock Bot Allgemeine Java-Themen 3
J Front-/Backend in Java Allgemeine Java-Themen 14
doopexxx JAVA Google Webcrawler Allgemeine Java-Themen 1
J JavaScript innerhalb eines Java Projekts ausführen Allgemeine Java-Themen 2
A Java Programm erstellen hilfe Allgemeine Java-Themen 10
G java.lang.NoClassDefFoundError: org/aspectj/lang/Signature Allgemeine Java-Themen 2
lalex1491 Java Aktienkurse nachfragen Allgemeine Java-Themen 4
J Class to link Java Allgemeine Java-Themen 4
V Wie funktioniert das Schlüsselwort "final" von Java? Allgemeine Java-Themen 19
mrStudent Inferenz JAVA Allgemeine Java-Themen 6
U URI Rechner (Java Script) Allgemeine Java-Themen 7
TheSkyRider Java Geburtsdatum Textfeld Allgemeine Java-Themen 7
mihe7 Java 19 JavaDocs: Browserintegration Allgemeine Java-Themen 0
Encera Gleichzeitiges Ausführen und verbinden von 2 Java-Klassen über die Eingabeaufforderung und Eclipse Allgemeine Java-Themen 21
H Java Rechner Programmierung der Mathematik Allgemeine Java-Themen 33
Lennox Schinkel Java Kara Auf einen Java Host laufen lassen Allgemeine Java-Themen 17
C Fußnoten von DocX mit Java Allgemeine Java-Themen 2
C Fußnoten in DocX mit Java Allgemeine Java-Themen 1
M Aussagenlogik in Java Programmieren Allgemeine Java-Themen 22
B Per Java Word Dokument schreiben? Allgemeine Java-Themen 8
krgewb Java-Bibliothek für ONVIF Allgemeine Java-Themen 1
KonradN Oracle übergibt (Java Teile der) GraalVM Community Edition an OpenJDK Community Allgemeine Java-Themen 2
Momo16 Brauche Hilfe - Java Projekt kann nicht erstellt werden Allgemeine Java-Themen 12
B Java mit command line und jars benutzen? Allgemeine Java-Themen 18
M Java Überprüfen ob .exe-Datei bereits ausgeführt wird Allgemeine Java-Themen 2
B HTTP Allgemeine Fragen über Suchmaschine nutzen mit Java Allgemeine Java-Themen 20
Mick P. F. Wie kriege ich die Fehlermeldung "java: symbol lookup error: ..." weg? Allgemeine Java-Themen 11
K Nachhilfe Java Allgemeine Java-Themen 11
KonradN Java 19 Allgemeine Java-Themen 11
F IDEA IntelliJ Java Songliste erstellen Allgemeine Java-Themen 6
TheSepp Java bestimmtes Array auf den Wert 0 setzen Allgemeine Java-Themen 32
B Java Reflection Probleme beim wehcselseitigen Referenzieren zweier Klassen/Objekte Allgemeine Java-Themen 14
Sachinbhatt Sind alle Methoden in Java implizit virtuell Allgemeine Java-Themen 2
E Java und integrierte Grafikkarten Allgemeine Java-Themen 18
Sachinbhatt Wie wird die Typumwandlung bei Mehrfachvererbung in Java implementiert? Allgemeine Java-Themen 3
Peterw73 Hilfe bei Java gesucht Allgemeine Java-Themen 3
A Java unter Win 10 Allgemeine Java-Themen 1
B Woher kommen die Bildschirmkoordinaten beim java Robot? Allgemeine Java-Themen 14
P9cman java.Lang Klassen fehlen in JRE System Library Allgemeine Java-Themen 1
T Java Robot Class - Bot Allgemeine Java-Themen 3
E Wie Java Heap Space vergrößern? Allgemeine Java-Themen 3
B Java Programm auf virutellem Desktop laufen lassen? Allgemeine Java-Themen 1
D VBA Code mit Java ausführen möglich? Allgemeine Java-Themen 10
berserkerdq2 Threads, wie genau läuft das in Java ab? (Ich kann Threads erstellen und nutzen, nur das Verständnis) Allgemeine Java-Themen 6
izoards Java Home Pfad unabhängig von der Version Allgemeine Java-Themen 7
N JAVA-Code mit Grafikfenster zeichnet in Windows, aber nicht Mac. Allgemeine Java-Themen 4
L Java überprüfen lassen, ob sich ein gegebener Pfad / das Programm an sich auf einer CD oder Festplatte befindet Allgemeine Java-Themen 14
KonradN CVE-2022-21449: Fehler in Java bei Signaturprüfung Allgemeine Java-Themen 20
berserkerdq2 Java sql Allgemeine Java-Themen 15
JordenJost Unverständlicher Java code? Allgemeine Java-Themen 21
LimDul XSD To Java - Überschreiben von Assoziationen Allgemeine Java-Themen 1
Aartiyadav Comparisons and Swapa in Bubble-sort Java Allgemeine Java-Themen 6
KonradN Java 18 Allgemeine Java-Themen 8
N Statistische Auswertung von Logfiles (Einlesen, auswerten und grafische Aufbereitung von logfiles) mit Java Allgemeine Java-Themen 9
ME2002 Fragen aus einer Java Klausur Allgemeine Java-Themen 67
Z Mit Java 8+ Streams Zeilen nummern zu Zeilen hinzufügen Allgemeine Java-Themen 17
M Verständnisfrage java.util.TimerTask Allgemeine Java-Themen 2
V Hilfe mit Java Code Allgemeine Java-Themen 4
S Processing Java Code verstehen Allgemeine Java-Themen 4
O Newton Algorithmus Java Allgemeine Java-Themen 1
P Java Quellen finden Allgemeine Java-Themen 3
M Java Analyse/ SWOT-Analyse Allgemeine Java-Themen 13
J c Programm läuft nicht in compilierter Version des Java Projektes Allgemeine Java-Themen 7
Atten007 Java-Klasse auf macOS entpacken? Allgemeine Java-Themen 2
E java mithilfe url .jar datei öffnen Allgemeine Java-Themen 9

Ähnliche Java Themen

Neue Themen


Oben