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

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

在while循環中將字符串和整數添加到不同的ArrayLists

在while循環中將字符串和整數添加到不同的ArrayLists

郎朗坤 2022-05-21 19:57:53
我被困在一個練習中,我應該接受一個單詞和數字(由空格分隔),然后將它們放入一個 ArrayList(數字和名稱的不同列表)。例如,如果我寫“Jordan 19”,Jordan 的名字應該放在名為“listNames”的 ArrayList 中,而數字 19 應該放在名為“listNumbers”的 ArrayList 中。如果鍵入字母“q”,則應該中斷 while 循環。我遇到的問題是當我嘗試從 ArrayList 中獲取名稱和編號時,我只得到一個空行和輸入的數字。即用于數字的 ArrayList 有效,但不適用于名稱??赡苡惺裁磫栴}?謝謝您的幫助!ArrayList<String> listNames = new ArrayList<String>();ArrayList<Integer> listNumbers = new ArrayList<Integer>();Scanner in = new Scanner(System.in);System.out.println("Write a name and number (separate with blankspace), end with 'q'");boolean go = true;while (go) {    String full = in.nextLine();    if (in.next().equals("q")) {        go = false;    }    int len = full.length();    int blank = full.indexOf(" ");    String nameString = full.substring(0, blank);    String numberString = full.substring(blank + 1, len);    int number = Integer.parseInt(numberString);    listNames.add(nameString);    listNumbers.add(number);}System.out.println(listNames.get(1));System.out.println(listNumbers.get(1));
查看完整描述

3 回答

?
慕桂英546537

TA貢獻1848條經驗 獲得超10個贊

我認為您的邏輯應該是從掃描儀讀取整個輸入行。然后,進行完整性檢查以確保它只有兩個由空格分隔的術語。如果是這樣,則將單詞和數字分配給它們各自的數組。


System.out.println("Write a name and number (separate with blankspace), end with 'q'");

while (true) {

    String full = in.nextLine();

    if ("q".equals(full)) {

        break;

    }


    String[] parts = full.split("\\s+");

    if (parts.length != 2) {

        // you could also just break here as well, but throwing an exception

        // is something you might actually do in a production code base

        throw new IllegalArgumentException("Wrong number of input terms; use 2 only");

    }


    listNames.add(parts[0]);

    listNumbers.add(Integer.parseInt(parts[1]));

}


查看完整回答
反對 回復 2022-05-21
?
Qyouu

TA貢獻1786條經驗 獲得超11個贊

使用 String.split() 函數會更容易得到你想要的。


正如您所提到的,輸入由空格分隔。假設輸入是“Jordan 19”,那么您可以使用如下內容:


String [] data = full.split(" "); //split the input by a blank space

listNames.add(data[0]); //data[0] = Jordan

listNumbers.add(Integer.parseInt(data[1])); //data[1] = 19

如果您的所有輸入都是一個字符串,然后是一個數字,這應該可以工作


查看完整回答
反對 回復 2022-05-21
?
qq_遁去的一_1

TA貢獻1725條經驗 獲得超8個贊

ArrayLists 從索引 0 開始。因此,如果要輸出 ArrayList 中的第一個 Item,則必須編寫System.out.println(listNames.get(0));



查看完整回答
反對 回復 2022-05-21
  • 3 回答
  • 0 關注
  • 158 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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