Ich habe versucht, Eingaben aus einer Datei zu lesen und ihre Zeichen zu klassifizieren. Drucken, wie viele Zeichen Großbuchstaben, Kleinbuchstaben, Ziffern, Leerraum und etwas anderes in der Textdatei sind. Also habe ich an meinem Code gearbeitet, aber ich hatte zwei Probleme.Wann sollten Sie einen Scanner schließen?
Wenn ich versuche, meinen Scanner zu schließen, stoße ich auf eine java.lang.IllegalStateException: Scanner geschlossen. Außerdem produziert mein Code eine Endlosschleife, aber ich habe es stundenlang angeschaut, aber ich weiß nicht, was los ist. Ich bin ein Anfänger bei Java, also habe ich noch nichts über hashmap oder gepufferte Leser erfahren. Danke für all deine Hilfe.
Hier ist mein Code:
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Scanner;
public class Characters
{
public static void main(String[] args) throws FileNotFoundException
{
Scanner console = new Scanner(System.in);
System.out.print("Input file: ");
String inputFileName = console.next();
Scanner in = new Scanner(new File(inputFileName));
while(in.hasNextLine())
{
String line = in.nextLine();
int len = line.length();
int uppercase = 0 ;
int lowercase = 0;
int digits = 0;
int whitespace = 0;
int other = 0;
for (int i = 0 ; i < len ; i++)
{
char c = line.charAt(i);
if (Character.isLowerCase(c))
{
lowercase++;
}
else if (Character.isUpperCase(c))
{
uppercase++;
}
else if (Character.isDigit(c))
{
digits++;
}
else if (Character.isWhitespace(c))
{
whitespace++;
}
else
other++;
}
System.out.println("Uppercase: " + uppercase);
System.out.println("Lowercase: " + lowercase);
System.out.println("Digits: " + digits);
System.out.println("Whitespace: " + whitespace);
System.out.println("Other: " + other);
in.close();
}
}
}
Angenommen, Sie verschieben die 'in.close()' out Seite der 'while' Schleife. –