亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

從標準輸入讀取一行時如何限制字數?

從標準輸入讀取一行時如何限制字數?

收到一只叮咚 2023-09-06 16:47:00
我是 Stackoverflow 的新手,這是我第一次提問。我徹底搜索了我的問題,但是找不到合適的答案。如果有人問這個問題,我很抱歉。先感謝您。問題來自Hyperskill.com,如下:編寫一個程序,從標準輸入讀取五個單詞,并在新行中輸出每個單詞。首先,您需要打印第一行的所有單詞,然后打印第二行的所有單詞(從左到右)。輸入示例 1:該 Java 課程是自適應的示例輸出 1:該Java課程是自適應的我嘗試解決它import java.util.Scanner;public class Main {    public static void main(String[] args) {        /* I have not initialized the "userInput" String.         * I know that String is immutable in Java and         * if I initialize it to an empty String ""         * and read a String from user.         * It will not overwrite to the "userInput" String.         * But create another String object to give it the value of the user input,         * and references the new String object to "userInput".         * I didn't want to waste memory like that.         */        String userInput;        String[] userInputSplitFirstLine = new String[3];        String[] userInputSplitSecondLine = new String[2];        Scanner scan = new Scanner(System.in);        userInput = scan.nextLine();        userInputSplitFirstLine = userInput.split("\\s+");        userInput = scan.nextLine();        userInputSplitSecondLine = userInput.split("\\s+");        for(String firstLineSplitted: userInputSplitFirstLine) {            System.out.println(firstLineSplitted);        }        for(String secondLineSplitted: userInputSplitSecondLine) {            System.out.println(secondLineSplitted);        }        scan.close();    }}如果您嘗試上面的示例輸入,輸出將與上面的示例輸出匹配。但是,如果您在第一行寫入超過 3 個字和/或在第二行寫入超過 2 個字,則大小userInputSplitFirstLine為 3 的數組將存儲超過 3 個字。數組也是如此userInputSplitSecondLine。我的第一個問題是,大小為 3 的數組 (userInputSplitFirstLine) 和大小為 2 的數組 (userInputSplitSecondLine) 如何分別容納超過 3 個和 2 個元素?我的第二個問題是如何限制用戶可以在一行中插入的單詞數?例如,第一行只接受3個單詞,第二行只接受2個單詞?
查看完整描述

5 回答

?
qq_笑_17

TA貢獻1818條經驗 獲得超7個贊

您可以使用掃描儀對象的下一個方法來讀取字符串,然后可以輕松地在新行上打印它。


while(true){

            if(scanner.hasNext()){

                System.out.println(scanner.next());

            }

            else{

                break;

            }

}


查看完整回答
反對 回復 2023-09-06
?
翻閱古今

TA貢獻1780條經驗 獲得超5個贊

我認為這應該可以完成工作。如果您有任何疑問,請隨時詢問。


import java.util.Scanner;


class App {

    public static void main(String[] args) {

        final StringBuffer line = new StringBuffer();

        final StringBuffer words = new StringBuffer();


        try (final Scanner sc = new Scanner(System.in)) {

            while (sc.hasNextLine()) {

                final String currentLine = sc.nextLine();

                line.append(currentLine).append(System.lineSeparator());

                for (final String word : currentLine.split("\\s+")) {

                    words.append(word).append(System.lineSeparator());

                }

            }

        } finally {

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

            System.out.println();

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

        }

    }

}


查看完整回答
反對 回復 2023-09-06
?
滄海一幻覺

TA貢獻1824條經驗 獲得超5個贊

我的第一個問題是,大小為 3 的數組 (userInputSplitFirstLine) 和大小為 2 的數組 (userInputSplitSecondLine) 如何分別容納超過 3 個和 2 個元素?


這里的數組:


String[] userInputSplitFirstLine = new String[3];

與您收到的不同split:


userInputSplitFirstLine = userInput.split("\\s+");

當您執行上述分配時,其中的舊數組基本上被“覆蓋”,現在userInputSplitFirstLine引用的新數組的長度與舊數組的長度無關。split 總是返回一個新數組。


我的第二個問題是如何限制用戶可以在一行中插入的單詞數?例如,第一行只接受3個單詞,第二行只接受2個單詞?


這實際上取決于您所說的“限制”是什么意思。如果你只是想檢查是否正好是三個單詞,如果不是,則退出程序,你可以這樣做:


userInputSplitFirstLine = userInput.split("\\s+");

if (userInputSplitFirstLine.length != 3) {

    System.out.println("Please enter exactly 3 words!");

    return;

}

您可以對第二行執行類似的操作。


如果您希望用戶無法輸入超過 3 個單詞,那么這是不可能的,因為這是一個命令行應用程序。


順便說一句,建議的解決方案中的代碼可以工作,因為next()默認返回下一個“單詞”(或者我們通常認為的單詞)。


查看完整回答
反對 回復 2023-09-06
?
慕碼人8056858

TA貢獻1803條經驗 獲得超6個贊

解決問題的方法:

編寫一個程序,從標準輸入讀取五個單詞,并在新行中輸出每個單詞。

這是我的解決方案:

while(scanner.hasNext()){
      System.out.println(scanner.next());
}


查看完整回答
反對 回復 2023-09-06
?
慕姐8265434

TA貢獻1813條經驗 獲得超2個贊

希望對你有幫助!


    public class pratice1 {

    public static void main (String[]args) {

    Scanner sc = new Scanner(System.in);

    String input = sc.nextLine();

    String input1 = sc.nextLine();

    char[]a =input.toCharArray();

    char[]a1 = input1.toCharArray();

    System.out.println(input +""+ input1);

    int a2=0;

    if(input!=null) {

    for(int i=0;i<input.length();i++) {

        if(a[i]==' ') { 

            a2=i;

            for(int j=0;j<a2;j++) {

                System.out.println(a[i]);

                a2=0;

            }

        }

        else System.out.print(a[i]);

    }System.out.println("");

    for(int i=0;i<input1.length();i++) {

        if(a1[i]==' ') {    

            a2=i;

            for(int j=0;j<a2;j++) {

                System.out.println(a1[i]);

                a2=0;

            }

        }

        else System.out.print(a1[i]);

    }

    }


}

}


查看完整回答
反對 回復 2023-09-06
  • 5 回答
  • 0 關注
  • 199 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號