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

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

Java - 如何在流中使用函數?

Java - 如何在流中使用函數?

MYYA 2019-04-19 18:15:13
最近,作為我學習的一部分,我們開始用流來練習Java問題解決。雖然用流來解決加/減或字符串/字符排序問題的定量問題,但相對清晰易懂,但是使用流時我不清楚一些更復雜的問題。例如,給定一組字符,我們必須為范圍內的每個字母打印GO /去反轉信號,例如A變為Z,字母b變為y。例如,假設我們有集合'A','k','p' - >在操作之后我們只得到p。使用簡單的函數,我能夠解決問題如下:public static char flipLetter(char c){     int count = 7;     if((int)c >= 72 && (int)c <= 78){         for (int i = 72; i <= 78; i++) {             if((int)c == i)                 return (char)((int)'Z' - count);             count++;         }     }     else{         for (int i = 104; i <= 110; i++) {             if((int)c == i)                 return (char)((int)'z' - count);             count++;         }     }     return c;}public static boolean isInRange(char c){     return (((int)c >= 72 && (int)c <= 78) || ((int)c >= 104 && (int)c <= 110));}public static void inRange(char arr[]){     for (int i = 0; i < arr.length; i++) {         if(isInRange(arr[i])){             System.out.print(flipLetter(arr[i])+" ");         }     }}我很樂意獲得有關如何使用我編寫的代碼來實現流程或聽取其他評論的幫助。
查看完整描述

3 回答

?
慕尼黑8549860

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

你可以這樣做:

public static void inRange(char arr[]){
    IntStream.range(0, arr.length).mapToObj(i -> arr[i])
             .filter(letter -> isInRange(letter))
             .map(letter -> flipLetter(letter))
             .forEach(e -> System.out.print(e  + " "));}

這將創造一個Stream對的Array傳遞,過濾掉任何不在范圍內,調用flipLetter上每個字母的方法,然后打印出每個


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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