第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Java 中模擬 SQL shell 模擬器

在 Java 中模擬 SQL shell 模擬器

神不在的星期二 2023-06-14 14:30:56
我想用 Java 模擬一個模擬 SQL shell。我們的想法是我們鍵入一行文本并終止它,;然后按回車鍵,該行將打印回控制臺。這應(yīng)該能夠接受多行文本,一旦有一個;回車符,它應(yīng)該打印出文本。這是我的代碼:while(true){      Scanner scanner = new Scanner(System.in).useDelimiter(";");      StringBuilder builder = new StringBuilder();      while(scanner.hasNextLine()){         if(scanner.nextLine().endsWith(";")){            builder.append(scanner.nextLine());            break;          }else{            builder.append(scanner.nextLine());          }          }            System.out.println(builder.toString());        }這是行不通的,因為它永遠不會退出內(nèi)部 while 循環(huán)。
查看完整描述

2 回答

?
精慕HU

TA貢獻1845條經(jīng)驗 獲得超8個贊

僅供參考: nextLine()讀取lines,而不是tokens,因此您的代碼未使用定界符。


您需要使用next()來讀取標(biāo)記,正如您現(xiàn)在意識到的那樣,您需要一些條件來結(jié)束循環(huán)。


結(jié)束 shell 的常用方法是exit命令。


;由于您希望語句以回車符結(jié)尾,因此您需要為此調(diào)整分隔符。為了更寬松,在;(正則表達式:\h水平空白字符)之后允許空格,并匹配換行符,而不僅僅是回車符(正則表達式:\R任何 Unicode 換行符序列)。


此外,您需要創(chuàng)建Scanner 外部任何循環(huán)。


Scanner scanner = new Scanner(System.in).useDelimiter(";\\h*\\R");

for (;;) {

    System.out.print(">");

    if (! scanner.hasNext())

        break;

    String stmt = scanner.next();

    stmt = stmt.replaceAll("(?mU:^\\s+\\R)|(?U:\\s+$)", ""); // remove blank lines and trailing spaces

    if (stmt.equals("exit"))

        break;

    System.out.println("Received command: " + stmt);

}

System.out.println("Done!");

示例輸出


>test;

Received command: test

> This is a


multi-line test


with blank lines


          ;

Received command:  This is a

multi-line test

with blank lines

>

;

Received command: 

>exit;

Done!


查看完整回答
反對 回復(fù) 2023-06-14
?
HUH函數(shù)

TA貢獻1836條經(jīng)驗 獲得超4個贊

為什么不檢查每一行是否包含;?如果是,則附加相關(guān)值并跳出循環(huán)。


while(true){

            Scanner scanner = new Scanner(System.in);

            StringBuilder builder = new StringBuilder();

            while(scanner.hasNextLine()){

                String line = scanner.nextLine();

                if (line.contains(";"))

                {

                    String[] parts = line.split(";");

                    if (parts.length > 0)

                    {

                        builder.append(parts[0] + ";");

                    }

                    else

                    {

                        builder.append(";");

                    }

                    break;

                }

                else

                {

                    builder.append(line);

                }

            }

            System.out.println(builder.toString());

        }


查看完整回答
反對 回復(fù) 2023-06-14
  • 2 回答
  • 0 關(guān)注
  • 187 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號