Я пытаюсь передать объект Scanner методу create () , но внутри метода объект Scanner не имеет никакого значения.Вот код, если у кого-то есть советы:
import java.lang.*;
import java.io.*;
import java.util.*;
public final class Instructions
{
/**
* Make constructor private so that there cannot be
* any instances of the class.
*/
private Instructions(){}
public static void operate(String instruction)
{
//Get instruction
Scanner scanString = new Scanner(instruction);
scanString.useDelimiter(" |;");
String next;
//Scan and operate
if(scanString.hasNext())
{
next = scanString.next();
if(next.equals("CREATE"))
{
create(scanString);
}
else if(next.equals(".EXIT"))
{
System.exit(0);
}
}
scanString.close();
}
private static void create(Scanner scanString)
{
//Program reaches here with what should be "DATABASE db_1"
//left in scanString
String next;
if(scanString.hasNext())
{
System.out.println("HERE"); //Never reaches this
next = scanString.next();
if(next.equals("DATABASE"))
{
createDatabase(scanString);
}
else if(next.equals("TABLE"))
{
createTable(scanString);
}
else
{
System.out.println("Instruction " + next + " not recognized. Skipping instruction." );
}
}
}
private static void createDatabase(Scanner scanString)
{
File database;
if(scanString.hasNext())
{
database = new File(scanString.next());
if(!database.exists())
{
//Make a database file
try
{
database.createNewFile();
}
catch(IOException e)
{
e.printStackTrace();
}
}
else
{
System.out.println("!Failed to create database " + database.toString() +
"because it already exists.");
}
}
}
private static void createTable(Scanner scanString)
{
}
}
Входной файл, из которого я читаю, имеет вид:
CREATE DATABASE db_1;
Я пытаюсь выяснить, почему это когда явызовите scanString.hasNext () в методе create (), метод scanString.hasNext () не возвращает true, если после первого разделителя осталось еще два токена?