Ints ablesen

Status
Nicht offen für weitere Antworten.

Developer_X

Top Contributor
Hi, also wie ihr wisst, schreibe ich ja ein ChatPRogramm, also, ich wollte dass man die "PORT-NUMMER" ändern kann, oder dass die PortNUmmer zumindest irgendwo in einem txt document gespeichert ist, natürlich sind das nur zahlen
aber wieso funktioniert das überhaupt nicht?Wenn ich die Nummer aus einem Txt Document laden will?
Oder aus einem String?

[highlight=Java]import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Event;
import java.awt.Font;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintStream;
import java.net.Socket;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import com.sun.j3d.utils.applet.MainFrame;

public class JavaChat_1 extends Applet implements Runnable
{
public static int PORT;
Socket socket;
DataInputStream in;
PrintStream out;
TextField inputfield;
TextArea outputarea;
Thread thread;

String name;

public JavaChat_1()
{
File f2 = new File("F:/FUTUR.PROGRAMS/Chat/PORT.txt");
PORT = Integer.parseInt(getContents(f2));

File f = new File("F:/FUTUR.PROGRAMS/Chat/Saves.txt");
name = getContents(f);
new chatserver();
inputfield = new TextField();
outputarea = new TextArea();
outputarea.setFont( new Font("Dialog", Font.PLAIN, 12));
outputarea.setEditable(false);

this.setLayout(new BorderLayout());
this.add("South", inputfield);
this.add("Center", outputarea);

this.setBackground(Color.cyan);
this.setForeground(Color.cyan);
inputfield.setBackground(Color.black);
outputarea.setBackground(Color.black);

}

public void start()
{
try
{
socket = new Socket(this.getCodeBase().getHost(), PORT);
in = new DataInputStream(socket.getInputStream());
out = new PrintStream(socket.getOutputStream());
} catch (IOException e)
{
this.showStatus(e.toString());
say("Verbindung zum Server fehlgeschlagen!");

}

say(name+"\n"+"ist der Chat Sitzung"+"\n"+"im Port:"+PORT+" beigetreten"+"\n");

if (thread == null)
{
thread = new Thread(this);
thread.setPriority(Thread.MIN_PRIORITY);
thread.start();
}
}


public void stop()
{
try
{
socket.close();
} catch (IOException e)
{
this.showStatus(e.toString());
}

if ((thread !=null) && thread.isAlive())
{
thread.stop();
thread = null;
}
}


public void run()
{
String line;

try
{
while(true)
{
line = in.readLine();
if(line!=null)
outputarea.appendText(line+'\n' );
}
} catch (IOException e) { say("Verbindung zum Server abgebrochen"); }
}


public boolean action(Event e, Object what)
{
if (e.target==inputfield)
{
String inp=(String)name +" : "+ e.arg;

out.println(inp);
inputfield.setText("");
return true;
}

return false;
}

public void say(String msg)
{
outputarea.appendText(msg);
}
public static void main()
{
new JavaChat_1();
}
static public String getContents(File aFile)
{
StringBuilder contents = new StringBuilder();
try {
BufferedReader input = new BufferedReader(new FileReader(aFile));
try {
String line = null;
while (( line = input.readLine()) != null){
contents.append(line);
}
}
finally {
input.close();
}
}
catch (IOException ex){
ex.printStackTrace();
}

return contents.toString();
}
}[/highlight]
 
Zuletzt bearbeitet von einem Moderator:

Developer_X

Top Contributor
auch wenn man als Port einen String namens "100" angibt, wenn ein Integer benutzt wird, anstatt eines grundsätzlichen ints, dann funktioniert das ganze nicht, kann mir einer in meinem Code sagen was ich falsch mache?
 

Developer_X

Top Contributor
s´chau dir mal in meinem Code den INt "PORT" an, und wofür er verwendet wird, ich habe versucht aus einem Txt Document die Zahl zu entnehmen
aber das klappt nicht, wieso
 
S

SlaterB

Gast
gewohnt direkt statt freundlich,
und dass ein Programm Fehlermeldungen ausgibt weiß man mit 327 Postings natürlich immer noch nicht ;)
 

L-ectron-X

Gesperrter Benutzer
Was geht nicht? Gibt's eine Fehlermeldung, ungewöhnliche Geräusche oder dampft da nur die Badewanne vom Nachbarn? ???:L
Du bist auf dem besten Wege in die Forum-Ignore-List.
 

Developer_X

Top Contributor
Code:
Exception in thread "Thread-5" java.lang.NullPointerException
	at Chat.JavaChat_1.run(JavaChat_1.java:147)
	at java.lang.Thread.run(Unknown Source)
 
S

SlaterB

Gast
und jetzt darf noch jeder mangels Nummerierung bis 147 selber zählen..
 

max40

Bekanntes Mitglied
oh man, ich werd beklopt! jetzt hättest du wenigstens sagen können ob es z.B. das

[HIGHLIGHT="Java"]contents.append(line);[/HIGHLIGHT]

oder wo anderes ist!
 

L-ectron-X

Gesperrter Benutzer
Hab ich mal für dich gemacht. Benutze für Java-Code den Highlighter! Einfach Code markieren (mit der Maus drüberziehen) und auf die Java-Tasse klicken.

@SlaterB: Warum wohl bist du Mod?;)
 

Developer_X

Top Contributor
wenn "in" null ist, wie kann ich das dann so anpassen, damit es den anforderungen entspricht und somit funktioniert?
 

max40

Bekanntes Mitglied
würde sagen das ist ein Folgefehler von:

HTML:
public void start()
{
		try
	{			
		socket = new Socket(this.getCodeBase().getHost(), PORT);
		in = new DataInputStream(socket.getInputStream());
		out = new PrintStream(socket.getOutputStream());
	} catch (IOException e)
	{
		this.showStatus(e.toString());
		say("Verbindung zum Server fehlgeschlagen!");
		
	}

Da gab es bestimmt ein Exception oder?
 

Developer_X

Top Contributor
würde sagen das ist ein Folgefehler von:

HTML:
public void start()
{
		try
	{			
		socket = new Socket(this.getCodeBase().getHost(), PORT);
		in = new DataInputStream(socket.getInputStream());
		out = new PrintStream(socket.getOutputStream());
	} catch (IOException e)
	{
		this.showStatus(e.toString());
		say("Verbindung zum Server fehlgeschlagen!");
		
	}

Da gab es bestimmt ein Exception oder?
Weiß nicht so recht, den Code wie oben gepostet so ist der bei mir, und die Fehlermeldung, wie gepostet ist auch bei mir
 

L-ectron-X

Gesperrter Benutzer
Also, wenn du für dein anderes Thema bereits eine Lösung gefunden haben willst, dann verwirrt mich diese Frage um so mehr. :eek:

Zuerst mal: Sämtliche Instanzvariablen solltest du private deklarieren.
Dann brauchst du für in eine initialisierte Referenz. Ergo: Objekt erzeugen und so positionieren, dass die Referenz an der Stelle sichtbar ist, an der du sie benötigst.
Wenn das nur an einer Stelle ist, dann direkt davor. Ist es an mehreren Stellen, bzw. nutzt du die Referenz öfter zur Laufzeit, dann als private Instanzvariable.
 
Zuletzt bearbeitet:
S

SlaterB

Gast
du musst herausfinden, warum in null ist,

quasi das aller erste in jedem Java-Programm ist eine funktionierende Ausgabe, sei es auf dem Bildschirm oder in ein Log,
ohne das geht gar nix, lernt man schon im ersten Hello World-Programm

der Rest ist einfacher als sich die Schuhe zuzubinden:
in wird hier angelegt:
> in = new DataInputStream(socket.getInputStream());
also muss das geprüft werden

System.out.println("gleich gehts los mit in");
in = new DataInputStream(socket.getInputStream());
System.out.println("in ist: "+in);

narrensicher zu prüfen, ob in erzeugt wurde und != null ist,
wenn keine Meldungen kommen oder die zweite nicht dann vielleicht Code gar nicht ausgeführt (oder Logging geht nicht),
es gab ne Exception oder oder,
nichts was in irgendeinerweise nicht herauszufinden wäre,
wenn nur eine allerwichtigste Grundlage vorhanden ist: funktionierendes Logging (oder ein Debug-Tool)
 

Developer_X

Top Contributor
so ich hab jetzt mal die eine methode, in der "in" vorkam da diesen POrt erklärt, und Port+"in" private gesetzt,
klappt aber immer noch nicht.
Code:
public void start()
	{
		File f2 = new File("F:/FUTUR.PROGRAMS/Chat/PORT.txt");
		PORT = Integer.parseInt(getContents(f2));
	
			try
		{			
			socket = new Socket(this.getCodeBase().getHost(), PORT);
			in = new DataInputStream(socket.getInputStream());
			out = new PrintStream(socket.getOutputStream());
		} catch (IOException e)
		{
			this.showStatus(e.toString());
			say("Verbindung zum Server fehlgeschlagen!");
			
		}
	   	
		say(name+"\n"+"ist der Chat Sitzung"+"\n"+"im Port:"+PORT+" beigetreten"+"\n");

		if (thread == null)
		{
			thread = new Thread(this);
			thread.setPriority(Thread.MIN_PRIORITY);
			thread.start();
		}
	}
Wie du sehen kannst habe ich ganz oben erklärt, was PORT ist...
 

Developer_X

Top Contributor
du musst herausfinden, warum in null ist,

quasi das aller erste in jedem Java-Programm ist eine funktionierende Ausgabe, sei es auf dem Bildschirm oder in ein Log,
ohne das geht gar nix, lernt man schon im ersten Hello World-Programm

der Rest ist einfacher als sich die Schuhe zuzubinden:
in wird hier angelegt:
> in = new DataInputStream(socket.getInputStream());
also muss das geprüft werden

System.out.println("gleich gehts los mit in");
in = new DataInputStream(socket.getInputStream());
System.out.println("in ist: "+in);

narrensicher zu prüfen, ob in erzeugt wurde und != null ist,
wenn keine Meldungen kommen oder die zweite nicht dann vielleicht Code gar nicht ausgeführt (oder Logging geht nicht),
es gab ne Exception oder oder,
nichts was in irgendeinerweise nicht herauszufinden wäre,
wenn nur eine allerwichtigste Grundlage vorhanden ist: funktionierendes Logging (oder ein Debug-Tool)

wenn ich das mache kommt bei mir als ausline gabe
Code:
java.io.DataInputStream@1a0c10f
 
G

Gelöschtes Mitglied 5909

Gast
Ergo ist es nicht null.

Ich will nicht unfreundlich sein, aber hast du jemals ein Buch über Java gelesen?
Alle postings von dir sind irgendwie nur Fragen und jedesmal ist es dringend.
Hättest du dir mal ein ordentliches Buch geholt oder sonstige Quellen durchgelesen würden viele deiner Probleme garnicht auftauchen.
 

L-ectron-X

Gesperrter Benutzer
Ich halte es auch für einen Fehler, gleich alle Funktionen zu implementieren. Wenn ein bestimmter Teil nicht funktioniert, solltest du diesen mal in einem extra Programm (KSKB) auslagern und das Problem dort untersuchen.
So lässt sich das Problem viel schneller eingrenzen, weil man sich auf das Wesentliche konzentriert.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben