Ich habe ein kleines Programm, dass txt einliest, die darin enthalten Integers bearbeitet und mit den Resulten ein neues txt-File schreibt. Das Programm war vor ein paar Tagen lauffähig. So weit, so gut.
Jetzt will es aber nicht mehr! Ich suche seit 1h den Fehler und finde nichts. Das input-txt habe ich mit einem sehr ähnlichen Pogramm erfolgreich getestet, das sollte also nicht das Problem sein.
Ich erhalte als Fehlermeldung einen Inputmismatch. Das verstehe ich nicht, da ich ich int auf int zuordne.
Danke im Voraus!
Liebe Grüsse aus Bern,
Markus
Hier der Programmcode:
Hier das Input-text bzw. dessen Inhalt (auch als file im Anhang: kapitel24a2.txt):
3
2
200
190
212
210
1
3
240
220
204
208
256
230
4
1
202
185
Das output-file ist leer, ich kann es darum hier nicht anhängen.
Hier die Fehlernmeldung, die ich erhalte:
java FileNameFromUserInput
Input File Name: kapitel24a2.txt
Output File Name: test.txt
Exception in thread "main" java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Scanner.java:939)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
at FileNameFromUserInput.main(FileNameFromUserInput.java:28)
Und hier der Vollständigkeit halber der Code, der dasselbe file benutzt und bei dem es so läuft wie es soll:
Jetzt will es aber nicht mehr! Ich suche seit 1h den Fehler und finde nichts. Das input-txt habe ich mit einem sehr ähnlichen Pogramm erfolgreich getestet, das sollte also nicht das Problem sein.
Ich erhalte als Fehlermeldung einen Inputmismatch. Das verstehe ich nicht, da ich ich int auf int zuordne.
Danke im Voraus!
Liebe Grüsse aus Bern,
Markus
Hier der Programmcode:
Java:
import java.util.Scanner;
import java.io.*;
class FileNameFromUserInput
{
public static void main (String[] args) throws IOException
{
int num, square;
// Scanner for user input
Scanner user = new Scanner( System.in );
String inputFileName, outputFileName;
// prepare the input file
System.out.print("Input File Name: ");
inputFileName = user.nextLine().trim();
File input = new File( inputFileName );
Scanner scan = new Scanner( "input" );
// prepare the output file
System.out.print("Output File Name: ");
outputFileName = user.nextLine().trim();
PrintWriter output = new PrintWriter( outputFileName);
// processing loop
while( scan.hasNext() )
{
num = scan.nextInt();
square = num * num ;
output.println("The square of " + num + " is " + square); //Ausgabe ins txt
System.out.println("The square of " + num + " is " + square); //zur Kontrolle am Bildschirm
}
// close the output file
output.close();
}
}
Hier das Input-text bzw. dessen Inhalt (auch als file im Anhang: kapitel24a2.txt):
3
2
200
190
212
210
1
3
240
220
204
208
256
230
4
1
202
185
Das output-file ist leer, ich kann es darum hier nicht anhängen.
Hier die Fehlernmeldung, die ich erhalte:
java FileNameFromUserInput
Input File Name: kapitel24a2.txt
Output File Name: test.txt
Exception in thread "main" java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Scanner.java:939)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
at FileNameFromUserInput.main(FileNameFromUserInput.java:28)
Und hier der Vollständigkeit halber der Code, der dasselbe file benutzt und bei dem es so läuft wie es soll:
Java:
import java.io.*;
import java.util.Scanner;
public class kapitel24a2 {
public static void main ( String[] args ) throws IOException {
int groupNr=0; // die Gruppe, die momentan bearbeitet wird
int numberOfIndi=0; //Anzahl Individuen per Gruppe
int averageStart=0; // der Start-Durchschnitt einer Gruppe
int averageFinal=0; // der End-Durchschnitt eineer Gruppe
int change=0; // die Veränderung zwischen averageStart und averageFinal. Braucht nicht unbedingt ne eigene Variable, aber is klarer so
int i=0; //Zähler für die loops
File file = new File ("kapitel24a2.txt");
Scanner scan = new Scanner(file);
Scanner user = new Scanner (System.in);
// prepare the output file (zum debuggen)
/* hier mit userabfrage, aber das nervt
System.out.print("Output File Name: ");
String outputFileName = user.nextLine().trim();
PrintWriter output = new PrintWriter( outputFileName );
*/
PrintWriter output = new PrintWriter( "kapitel24a2Debug.txt" );
while ( scan.hasNext()){
groupNr=scan.nextInt(); //Feststellen, um welche Gruppe es geht
numberOfIndi=scan.nextInt(); //Feststellen, wieviele Indi DIESE Gruppe hat
//Abhängig von Anzahl Indis kommende Zeilen/ints lesen (anzahl*2, weil jedes Indi 2 Zeilen hat)
averageStart=0; //löschen des letzten durchlaufes
averageFinal=0; //löschen des letzten durchlaufes
for (i=0; i<numberOfIndi; i++){
output.println("averageStart = "+averageStart);
output.println("averageFinal = "+averageFinal);
output.println("Scannen:");
averageStart=averageStart+scan.nextInt();
averageFinal=averageFinal+scan.nextInt();
output.println("averageStart = "+averageStart);
output.println("averageFinal = "+averageFinal);
output.println("----------------------loop fertig---------------------");
}
//Durchschnitte und Veränderung berechnen
averageStart=averageStart/numberOfIndi;
averageFinal=averageFinal/numberOfIndi;
change=averageFinal-averageStart;
//Ausgabe auf screen
System.out.println("Group "+groupNr+" has "+numberOfIndi+" subjects");
System.out.println("\t average start: \t"+averageStart);
System.out.println("\t average final: \t"+averageFinal);
System.out.println("\t change: \t\t"+change);
}
// close the output file
output.close();
System.out.println("\ndone with processing");
}
}