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

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

有人可以幫我理解為什么我需要一個 IF 和 WHILE 來回答這個問題嗎?

有人可以幫我理解為什么我需要一個 IF 和 WHILE 來回答這個問題嗎?

繁花不似錦 2022-07-14 17:13:24
快速提問 - 我已經找到了這個測驗問題的正確答案,但我并不完全理解。這是問題-給定一個名為 input 的 Scanner 引用變量,該變量與由一系列行組成的輸入源相關聯,編寫讀取每一行所需的代碼并將它們全部打印在一行上,用空格分隔。這是答案-if(input.hasNext())    System.out.print(input.nextLine());    while (input.hasNext()){        System.out.print(" " + input.nextLine());    }}我的問題是,為什么需要一個 if 和 while 語句。我知道我需要先閱讀該行,然后將其打印出來。為什么僅僅擁有以下內容還不夠:while(input.hasNext()){    System.out.print(" " + input.nextLine());}謝謝
查看完整描述

4 回答

?
倚天杖

TA貢獻1828條經驗 獲得超3個贊

從集合中創建帶有分隔符的字符串時遇到的一個常見問題是如何避免多余的前導或尾隨空格。這就是額外的 if 語句所達到的效果。還有其他幾種方法可以解決這個問題,下面我提供兩種選擇。


你也可以這樣做:


// first build the output string using a StringBuilder

StringBuilder sb = new StringBuilder();

while(input.hasNext()) {

    sb.append(input.nextLine()).append(" ");      

}    

// if there was input, the StringBuilder will have an extra space at the end

if (sb.length() > 0) {

    // in that case remove the space and print the result

    sb.deleteCharAt(sb.length() - 1);

    System.out.println(sb);

}

或者為了更有趣,遞歸解決方案:


private String read(Scanner input) {

    if (!input.hasNext()) {

        return "";

    }

    String head = input.nextLine();

    if (input.hasNext()) {            

        return head + " " + read(input);

    }

    else {

        return head;

    }

}



查看完整回答
反對 回復 2022-07-14
?
慕絲7291255

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

唯一的尊重是在第一個代碼中


if(input.hasNext())

    System.out.print(input.nextLine());

    while (input.hasNext()){

        System.out.print(" " + input.nextLine());

    }

}

您將打印 " " -space- 然后是字符串,但在第二個中,您將從行首開始,然后它會在單詞之間放置空格,所以


“空間”第一第二第三


是從


first second third // 開頭沒有空格


查看完整回答
反對 回復 2022-07-14
?
汪汪一只貓

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

問題是輸出將以空格開頭。您可以將空間放在最后,它會正常工作:


System.out.print(input.nextLine() + " ");

如果這仍然導致問題,也許這會起作用:


while(input.hasNext()){

    System.out.print(input.nextLine());


    if(input.hasNext())

        System.out.print(" ");

}

我沒有測試過它,但它應該在除最后一行之外的每一行附加一個空格。


查看完整回答
反對 回復 2022-07-14
?
拉莫斯之舞

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

唯一明顯的區別是正確答案不會產生以空格開頭的輸出。

使用此文件:

foo
bar
baz

您的代碼將具有以下輸出(注意“foo”前面的空格):

 foo bar baz

答案的代碼將有這個(“foo”前面沒有空格):

foo bar baz


查看完整回答
反對 回復 2022-07-14
  • 4 回答
  • 0 關注
  • 109 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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