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

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

Java Scanner 無論如何都會被清除,如何防止這種情況發(fā)生?

Java Scanner 無論如何都會被清除,如何防止這種情況發(fā)生?

人到中年有點甜 2022-06-15 16:56:18
我正在學(xué)習(xí) Java,我正在制作一個庫。我想在同一個 Scanner 上使用三種方法,但是每次都會清除該掃描儀。我們在課堂上使用 Jcreator,我的老師也無法弄清楚發(fā)生了什么。唯一有效的是public static void main(String[] args){    Scanner kb = new Scanner(System.in);    String typedStuff = kb.nextLine();    Scanner chopper = new Scanner(typedStuff);    System.out.println(howMany(chopper));    System.out.println(howManyInts(chopper));    System.out.println(howManyIntsAndDoubles(chopper));} public static int howMany(Scanner chopper) //{    String x = "";    int y = 0;    while(chopper.hasNext())    {        y++;        x = chopper.next();    }    return y;}    public static int howManyInts(Scanner chopper)        {            String x = "";    int y = 0;    while(chopper.hasNext())    {        if (chopper.hasNextInt())        {            y++;        }        x = chopper.next();    }    return y;}public static int howManyIntsAndDoubles(Scanner chopper){    String x = "";    int y = 0;    while(chopper.hasNext())    {        if (chopper.hasNextDouble())        {            y++;        }        x = chopper.next();    }    return y;}如果我輸入“yes 5.2 2 5.7 6 no”,那么我的輸出是:6 0 0但應(yīng)該是:6 2 4我知道它在第一種方法運行后清除掃描儀,無論它的順序是什么。即使我在方法的第一行將掃描儀轉(zhuǎn)換為另一種數(shù)據(jù)類型,它仍然會清除原始數(shù)據(jù)類型。謝謝!
查看完整描述

2 回答

?
偶然的你

TA貢獻(xiàn)1841條經(jīng)驗 獲得超3個贊

我不確定你的 chopper 類做了什么,但我認(rèn)為它將輸入字符串拆分為空格。如果是這種情況,您可能會在第一個方法 howMany() 中通過調(diào)用 chopper.Next() 索引到斬波器的末尾,直到它位于輸入的末尾。如果您已經(jīng)指向斬波器的末端,則在另一個方法中對 chopper.Next() 的下一次調(diào)用將為空。


我推薦以下內(nèi)容:


public static String howMany(Scanner chopper){

    String x = "";

    int y = 0;

    int doubleCount=0;

    int intCount =0;

    while(chopper.hasNext()){

        y++;

        if (chopper.hasNextDouble()){

            doubleCount++;

        }

        if(chopper.hasNextInt()){

            intCount++;

        }

        x = chopper.next();

    }

    return x+y+" "+ intCount + " " + doubleCount;

}


查看完整回答
反對 回復(fù) 2022-06-15
?
POPMUISE

TA貢獻(xiàn)1765條經(jīng)驗 獲得超5個贊

我假設(shè)這是一項學(xué)術(shù)練習(xí),您必須使用 Scanner 和一種方法解決您的問題。您的代碼中的問題是您為每個方法使用/傳遞相同的掃描儀,但是在方法 howMany (第一次調(diào)用)中,代碼消耗了您輸入的所有標(biāo)記。由于您無法將掃描儀重新設(shè)置為從輸入的開頭重新開始,因此可以聲明三個掃描儀(再次,我假設(shè)這是一個學(xué)術(shù)練習(xí),您必須使用掃描儀解決它)并傳遞每個掃描儀到你的方法。提示:如果不想使用 chopper.next() 的結(jié)果,不需要將其賦值給變量 x,直接調(diào)用 chopper.next() 即可。


public static void main(String[] args) {

    Scanner kb = new Scanner(System.in);

    String typedStuff = kb.nextLine();

    Scanner chopperHowMany = new Scanner(typedStuff);

    Scanner chopperHowManyInts = new Scanner(typedStuff);

    Scanner chopperHowManyDoubles = new Scanner(typedStuff);


    System.out.println(howMany(chopperHowMany));

    System.out.println(howManyInts(chopperHowManyInts));

    System.out.println(howManyIntsAndDoubles(chopperHowManyDoubles.reset()));

}


public static int howMany(Scanner chopper) //

{

    int y = 0;

    while (chopper.hasNext()) {

        y++;

        chopper.next();

    }

    return y;

}


public static int howManyInts(Scanner chopper) {

    int y = 0;

    while (chopper.hasNext()) {

        if (chopper.hasNextInt()) {

            y++;

        }

        chopper.next();

    }

    return y;

}


public static int howManyIntsAndDoubles(Scanner chopper) {

    int y = 0;

    while (chopper.hasNext()) {

        if (chopper.hasNextDouble()) {

            y++;

        }

        chopper.next();

    }

    return y;

}


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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