看板 java 關於我們 聯絡資訊
※ 引述《andrew43 (Myrmarachne)》之銘言: : 新手上路,盼同位先進多多包涵。 : 過去習慣使用 matlab/octave 中,建立連續數列之陣列,例如 : var=1:0.5:3 : 表示建立一個名為 var,內容為 1 至 3 以 0.5 為相距之一維陣列。 : 我的問題是,java 可以快速地做類似的事嗎? : 難不成每次都要用迴圈來做? : 現在小弟正試著將過去以 matlab/octave 的腳本改寫成 java, : 但面對這樣基本的問題仍不知如何是好。 : 盼請伺教,拜謝在先。 基本語法應該是沒有 , 不過有些設計準則可以參考. 如果找不到現成的作法(雖然我覺得應該有些外掛套件也會做) , 就擴充他. 重點往往不在於是不是每次都要用迴圈來做,而是你是不是每次都要重複寫迴圈的code. 以及當找到比迴圈更好的做法的時候,能不能快速的替換. 以下方的例子可以將getVar獨立於執行的程式之外,而變成一個擴充組件(MatlabUtils). 當然我不確定 var 實際的運作規則是如何(是否取首尾之類的), 這只是個在設計結構上的建議. 將來如果你找到更好的做法,也只需要修改MatlabUtils裡面的方法, 就可以一併異動到全部使用它的地方. 在設計上 , 這可說是將關係解離的一個方法. ────────────────────────────────── public class practiceOnly { public static void main(String[] args) { double[] ary = MatlabUtils.getVar(1, 0.5, 3); for (double i : ary) { System.out.println(i); } double[] anotherary= MatlabUtils.getVar(1, 1, 5); for (double i : anotherary) { System.out.println(i); } } } class MatlabUtils { public static double[] getVar(double start, double step, double end) { if (end < start) return new double[] {}; int length = (int) ((end - start) / step) + 1; double[] ret = new double[length]; double s = start; for (int i = 0; s <= end; i++) { ret[i] = s; s += step; } return ret; } } --  ▄▅▆▇███▇▆▅▄▃        ╰┼╯─╮ ╮         ◥███████████◣       ╰┼╯=│=│         ◥██████───────    *. ╯  ╯ ╯ の 物 語 .*  ◥███████──────◣ ~ ◢◣             ◢◣  ◥██████───────◤   ◥◤  空白的世界.翼 ◥◤  ◥██▁▂▃▄▅▆▇███▆▅▄▃▂▂telnet://tony1223.no-ip.info -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.128.219.202 ※ 編輯: TonyQ 來自: 220.128.219.202 (07/10 11:26)
andrew43:非常感謝。我了解你的意思。 07/10 11:57
slalala:這也是之前老闆要我去碰MATLAB我卻完全無法上手的原因 07/10 17:38