Fehler finden die 2.

Ronin

Mitglied
Hallo Leute,
direkt nochmal eine Fehlersuche von mir 🙂

Folgende Aufgabe:

Write a program that reads integers from a text file. The program writes out the positive integers in the input file to one output file and the negative integers to a second output file. Prompt the user for the names of all three files.

Soweit so gut, ier mein Code soweit:


import java.util.Scanner;
import java.io.*;

public class Ex3
{
public static void main(String[] args) throws Exception
{


//input anfordern

String inputname;

Scanner scanName = new Scanner(System.in);
System.out.println("Datei fuer den Input eingeben: ");
inputname = scanName.nextLine().trim();
File input = new File(inputname);

//Scanner fuer input

Scanner scan = new Scanner(input);



//output 1 und 2 anfordern

String nameoutput1, nameoutput2;

System.out.println("Dateinamen fuer den Output positiver Integer eingeben:");
nameoutput1 = scanName.nextLine();
File output1 = new File(nameoutput1);

System.out.println("Dateinamen fuer den Output negativer Integer eingeben:");
nameoutput2 = scanName.nextLine();
File output2 = new File(nameoutput2);



//Printstream fuer output
PrintStream print1 = new PrintStream(output1);
PrintStream print2 = new PrintStream(output2);

int wert;

while(scan.hasNextInt());
{
if (scan.nextInt() >= 0)
{
wert = scan.nextInt();
print1.println(wert);
}

else
{
print2.println(scan.nextInt());
}
}

print1.close();
print2.close();
}
}

Die input Datei ist dieses Mal auf jeden Fall richtig, sie enthält nur Integer, da kann man ja nicht viel falsch machen denke ich ^^

Wenn ich das Programm ausführe dann fragt die Console brav nach den 3 Dateinamen, und bleibt dann hängen, bzw macht nichts mehr...
Die beiden output dateien werden zwar erstellt, sind aber leer.

Probiere seit 30 min rum aber finde das Problem einfach nicht.
Wäre nett wenn jemand mir weiterhelfen könnte.
 
Verwende bitte mal JavaTags für den Quellcode.
Java:
import java.util.Scanner;
import java.io.*;

public class Ex3
{
public static void main(String[] args) throws Exception
{


//input anfordern

String inputname;

Scanner scanName = new Scanner(System.in);
System.out.println("Datei fuer den Input eingeben: ");
inputname = scanName.nextLine().trim();
File input = new File(inputname);

//Scanner fuer input

Scanner scan = new Scanner(input);



//output 1 und 2 anfordern

String nameoutput1, nameoutput2;

System.out.println("Dateinamen fuer den Output positiver Integer eingeben:");
nameoutput1 = scanName.nextLine();
File output1 = new File(nameoutput1);

System.out.println("Dateinamen fuer den Output negativer Integer eingeben:");
nameoutput2 = scanName.nextLine();
File output2 = new File(nameoutput2);



//Printstream fuer output
PrintStream print1 = new PrintStream(output1);
PrintStream print2 = new PrintStream(output2);

int wert;

while(scan.hasNextInt());
{
if (scan.nextInt() >= 0)
{
wert = scan.nextInt();
print1.println(wert);
}

else
{
print2.println(scan.nextInt());
}
}

print1.close();
print2.close();
}
}
 
Moin,

vielleicht liegt es daran, dass keiner wirklich das Problem versteht ... 😳

Was genau heißt denn "hängen bleiben" in diesem Fall?
Ggf. in welcher Zeile hängt das Programm (läßt sich doch mit dem Debugger feststellen) ?

Gruß
Klaus
 
Hallo,

wie sieht denn die Eingabe-Datei aus?

Der Scanner trennt den Eingabestrom ja an einem bestimmten Muster oder Zeichen (delimiter).
Als Standard-Zeichen werden "Whitespaces" genommen. Vielleicht hast Du Zeichen in Deiner Datei, die keine Zahlen sind.

Grüße
 
Also,
ich programmiere nur in einem normalen texteditor, debugger hab ich noch nie benutzt und auch noch nicht kennen gelernt.

Zur input datei: die enthält einfach nur integer, keine anderen zeichen oder ähnliches.

das programm läuft folgendermaßen ab.
Es wird zuerst nach der input datei gefragt. Diese gebe ich dann an, ist im selben Ordner gespeichert wie die Klasse und enthält nur integer.
Danach werden 2 weitere Eingaben erwartet, einmal für die erste output datei (dateinamen eingeben)
und für die 2.

nachdem ich den namen der 2. output datei eingegeben habe, sollte das programm die positiven integer aus der input datei in die 1. output datei und die negativen integer in die 2. output datei schreiben.

Was passiert ist: nichts weiter

die 2 dateien werden zwar angelegt, sind aber leer. Das programm wird auch nicht beendet.
Denke der Fehler wird entweder beim einlesen der Daten aus der input datei entstehen oder beim schreiben der Daten in die output dateien.

Meine input datei enthält folgende Integer:

1 2 3 4 5 6 7 8 8 -1 -2 -3 -4 -5

mehr nicht..
 
Zuletzt bearbeitet:
Hängt augenscheinlich in Z. 45, da die Schleife mit einem Semikolon solange blockiert, bis die Bedingung false ist. Semikolon entfernen, um den Schleifenbody zu erreichen ;-)
 

Zurück
Oben