ช่วยหน่อยจ้า java สุ่ม a-z ห้ามซ้ำ ออกมา 26 ตัว จากนั้นให้แสดงผลออกเป็นคู่ๆ
// เอามาเทียบกันดู..... อาจมีใครทำให้สั้นกว่านี้ได้ครับ....
Code (Java)
import java.util.Random;
public class JavaApplication1 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Random rand_int = new Random();
//เก็บตัวอักษร ไว้ใน array
char a[]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
int t[] = new int[26]; // ตัวแปรสำหรับเก็บตำแหน่ง index ของ array a[]
int i,j;
int z=0;
t[0]=rand_int.nextInt(25); // สุ่มตัวเลขindex 0-25 แล้วเก็บลง array ที่ 0 ไปเลย เพราะตัวแรกไม่ซ้ำอยู่แล้ว
do {
z=z+1; // เลื่อนตำแหน่ง array ของ t ไป 1
j=rand_int.nextInt(25); //สุ่มตัวเลขและเก็บใส่ตัวแปร ไว้
// Loop นี้ใช้วิ่งหาตัวเลขที่ ตัวแปร t[] เก็บอยู่ ถ้า ตัวที่สุ่มมา ซ้ำกับ ตัวที่อยู่ใน t[] ให้สุ่มใหม่
for(i=0;i<t.length-1;i++){
if(j==t[i]){
j=rand_int.nextInt(26);
i=0;
}
}
t[z]=j; // ถ้าเลขที่สุ่มมาไม่ซ้ำ ก็เก็บไว้ใน t[] ทำไปเรื่อยจนครบ 26 เลข
} while(z<25);
System.out.println("..แสดงตัวอักษรที่สุ่มออกมา แบบไม่ซ้ำ(ติดกัน) ...");
for(j=0;j<26;j++){
System.out.print(a[t[j]]);
}
System.out.println(" ");
//System.out.println("********************************");
System.out.println(" ");
// จากตรงนี้ แบ่งแสดงข้อมูลทีละ 2 นะ
System.out.println("..แสดงตัวอักษรที่สุ่มออกมา แบบเป็นคู่ๆ ...");
i=0;
for(j=0;j<26;j++){
//System.out.println("Array @ "+j+" : "+a[t[j]]);
i=i+1;
System.out.print(a[t[j]]);
if(i%2==0){System.out.print(" ");}
}
System.out.println(" ");
//System.out.println("********************************");
}
}
Date :
2013-07-04 18:52:32
By :
เอก
ขอบคุณมากน๊าาาาาาาาาาาาาาาาาาาาาาาาา
Date :
2013-07-05 00:53:53
By :
OTJava
Load balance : Server 01