鐵之狂傲

 取回密碼
 註冊
搜尋

切換到指定樓層
1#
實在是看不懂....
我設一個陣列.並且要讓裡面數字出現隨機排列

public class test {
   public static void main(String[ ]args) {
     int list[]={85,90,86,74,83,99,97,89};
       int i,j,x;
     for (i = 0;i < 8;i++) {
       j = (int) (Math.random()*8);
     x = list;
    list = list[j];
    list[j] = x;
       }
   String str = " ";
    for (i = 0;i < 8;i++) str += String.valueOf(list)+" ";
      System.out.println(str);
   }
}


我是都看的懂拉!
只是我不明白
     x = list;
    list = list[j];
    list[j] = x;
這3行的意思.
如果是說要把 i 設定為陣列中.從第一個到最後一個
然後 j 是要隨機取出.
然後要讓 i = j .是因為要從陣列第一個到最後一個隨機取出的意思.
那為何要設一個x勒?
我試過只打
list = list[j];
所出現的數字會重複出現.
也就是說陣列中的85可能出現2次以上.
如果只打
list = list[j] = x;
效果一樣
如果這樣打
     x = list;
    list[j] = list[i];
    list[j] = x;
也會重複出現.
所以我想問一下.
x的用意何在.
他門之間關係為何阿?
 
[url="https://www.gamez.com.tw/showthread.php?p=1461464#post1461464"][font=標楷體][size=4][b]盛夏的果實詩集錄[/b][/size][/font][/url] [size=4][color=red][moveup][/color][font=標楷體][color=silver][b]行如怒象奔走.聲如狼疾嘶吼.世界掌握於手.疑似海市蜃樓.[/b][/color][/font][/size] [size=4][font=標楷體][color=silver][b]名利看似迷濛.何必盲目跟從.是故名利雙擁.到頭卻是場空.[/b][/color][/font][/size] [size=4][font=標楷體][color=silver][b]問君何事感慨?無非名利不再.天下無人看開.苦流淚涕也哉.[/b][/color][/font][/size] [size=4][font=標楷體][color=silver][b]輪迴循環千遍.注定人生萬千.一生似火如煙.何苦眷戀人間.[/b][/color][/font][/size] [size=4][color=darkorchid][color=cyan][b][font=標楷體][color=silver]行遍春夏秋冬.莫提何去何從.應記浮生若夢.願君隨緣珍重.[/color][/font][/b][/color][/moveup][/color][/size] [size=4][color=white][movel]如果天說地無情.[/movel][/color][/size] [size=4][color=white][mover]地說天無常.[/mover][/color][/size] [size=4][color=white][movel]那你會繼續依偎著地.[/movel][/color][/size] [size=4][color=white][mover]還是仰望著天?[/mover][/color][/size] [size=4][size=4][size=4] [/size][/size][/size]
轉播0 分享0 收藏0

回覆 使用道具 檢舉

名望的英雄

KUSO四格畫家

回覆: 關於JAVA程式語言

假設你把X刪除後不影響程式運作的話

那麼X便沒有意義
 

回覆 使用道具 檢舉

回覆: 關於JAVA程式語言

[QUOTE='墮夜']假設你把X刪除後不影響程式運作的話

那麼X便沒有意義[/QUOTE]

所以我才想知道X的用意阿...
因為不能少他...
但是程式想要把陣列內數字隨機排序.
所以要
list = list[j];
但是這樣數值會出現重複.
那如果
list = list[j]會出現重複.
那為什麼
x = list;
list = list[j];
list[j] = x;
這樣就不會重複了呢?
另外.
如果list=list[j]
那list[j]不就也等於list嗎?
可是程式裡我打
x = list;
list[j] = list[i];
list[j] = x;
卻也會重複....
以上...
 

回覆 使用道具 檢舉

回覆: 關於JAVA程式語言

先請問一個小問題...
在您的目前觀念中(直覺的)....
list 與 list[j] 是不同的陣列或者是同一個陣列?
----------------------------------------------------------------------------------
Q1:
X的用意
x = list;
list = list[j];
list[j] = x;

list 與 list[j] 指的是同一個陣列吧?好...假設它們是同一個好了.....
我們以 i 代表 85, j 代表89(陣列中的頭,尾)...請問....要如何交換它們兩個??
沒錯....需要一個暫時的容器(變數)"X".
否則....將會產生覆蓋的情況(頭蓋尾或尾蓋頭)

Q2:
list = list[j] = x;

這一行...有點怪....(覺得它是錯的....但不敢肯定)(因為橘子不懂程式)
這一行的意思應該是....將 X 指定給 list[j],然後將 list[j] 指定給 list
假設它取代 Q1 中的第1,2行...請問..."X"是多少?,未指定初值可能為任意數...
程式跑出來的答案...對了...純粹巧合....錯了...是正常的....
如果是取代 Q1 中的第2,3行....答案可能是對的...但應該還是錯的....
連同第一行看....會發現怪怪地...
x = list; //把 list丟給 X
list = list[j] = x;//STEP1:把X丟給list[j]....嗯...list[j]原本的值去哪了??
         //STEP2:把 list[j]丟給list....(驚)
         這...list[j]不就是 X.....而X不就是 list....怪怪的對吧!

Q3:
x = list;
list[j] = list[i];
list[j] = x;

請看第二行....將 list丟給list[j]
問題來了...list[j]的值去哪了??
第三行...將X丟給list[j]....(和第二行沒啥不同不是)

Q4:
如果
list = list[j]會出現重複.
那為什麼
x = list;
list = list[j];
list[j] = x;
這樣就不會重複了呢?

如果這樣打
x = list;
list[j] = list[i];
list[j] = x;
也會重複出現.

因為...(給您自己想如何....)
-------------------------------------------------------------------------------------
另...覺得...您對 = 這個運算的解釋似乎偏向"等於"(由您的問題點所感受到的感覺...)
(橘子相信您清楚它的使用...可能是不自覺下的結果...)
記得..指定運算...都是由右方指定給左方的不是...您的問題點似乎出在指定運算的理解錯誤上.
在此提供您個人的方法供您參考...

橘子是以""來稱乎它....比如:

X=Y;  // X為Y

而不是 Y指定給 X,或 X 等同 Y(好難記,好詏口,誰想出來的...怪~)
覺得這樣比較不會和 == (等於)弄混,也比較好唸,好記.


最後...橘子不懂程式(認真)...有犯冒之處望請海涵...
有錯...就當橘子是來耍白痴的好了...
 

回覆 使用道具 檢舉

回覆: 關於JAVA程式語言

[QUOTE=橘夢日記]先請問一個小問題...
在您的目前?與 list 是不同的陣列或者是同一個陣列?
----------------------------------------------------------------------------------
Q1:
list 與 list 指的是同一個陣列吧?好...假設它們是同一個好了.....
我們以 i 代表 85, j 代表89(陣列中的頭,尾)...請問....要如何交換它們兩個??
...『刪除過多引言』[/QUOTE]



喔!
對我太有幫助了.
暫存阿?
恩~原來如此.
難怪會被它蓋過去.
大大你程式學的好強阿!
受小弟一拜.
看來我打的程式還不夠!
回家再去多練習~"~

燃燒生命!~~~~~~~

謝謝唷!
以後有問題還得靠你!
多多指教!
 

回覆 使用道具 檢舉

回覆: 關於JAVA程式語言

只是要打亂數字, 還有別的方法:
先把數字加到 Vector 裡, Random 取出其中一個, 放到另外一個 Vector 裡
原先有數字的 Vector 資料被取完之後, 結果就是打亂過的 Vector

  1. import java.util.*;
  2. public static void main( String argv[] )
  3. {
  4.   Vector data = new Vector();
  5.   Vector result = new Vector();
  6.   Random random = new Random();
  7.   int list[] = { 85, 90, 74, 83, 99, 97, 89 };
  8.   for( int i = 0 ; i < list.length ; i++ )
  9.   {
  10.          data.add( new Integer(list[i]) );
  11.   }
  12. //
  13. // 邏輯只有這一個 while 而已..
  14. //
  15.   while( !data.isEmpty() )
  16.   {
  17.         result.add(
  18.           data.remove( random.nextInt( data.size() ) )
  19.         );
  20.   }
  21.   System.out.println( "Randomized output: " );
  22.   for( Enumeration e = result.elements() ; e.hasMoreElements() ; )
  23.   {
  24.          System.out.print( e.nextElement() + " " );
  25.   }
  26.   System.out.println();
  27. }
複製代碼
 

回覆 使用道具 檢舉

你需要登入後才可以回覆 登入 | 註冊

存檔|手機版|聯絡我們|新聞提供|鐵之狂傲

GMT+8, 24-5-19 21:22 , Processed in 0.022904 second(s), 16 queries , Gzip On.

回頂部