传递给方法的对象有没有价值?

问题描述 投票:0回答:1

我试图通过一个扫描仪对象的方法创建(),但在方法内部扫描仪的对象不具有任何价值。下面是如果有人有任何提示的代码:

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;

我试图找出为什么,当我打电话的create()方法scanString.hasNext(),scanString.hasNext()时,有两个第一分隔符后留下的记号是不是返回true?

java java.util.scanner database-cursor
1个回答
0
投票
Scanner scanString = new Scanner(instruction);

这将创建一个使用给定Scanner作为输入String

next = new String(scanString.next());

这读取基于扫描器的分隔符,默认为空格输入。如果输入的字符串包含没有空格,则此调用将返回整个输入字符串。

注意:你不应该使用new String()。在这里你可以做next = scanString.next()

© www.soinside.com 2019 - 2024. All rights reserved.