[code="java"]
import java.util.ArrayList;
import java.util.List;
import java.io.*;
public class Cards {
private List list;
public Cards() {
list = new ArrayList<String>();
}
public void put(String card) {
list.add(card);
}
public void get() {
System.out.println("你拿到的牌是");
for (int i = 0; i < list.size(); i++) {
String cad = list.get(i);
System.out.print(cad + ",");
}
}
public static void main(String[] args) {
String[] cards = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10",
"J", "Q", "K" };
String color[] = { "黑桃", "红桃", "梅花", "方块" };
Cards deck = new Cards();
for (int i = 0; i < cards.length; i++) {
int num = 0;
if (Math.random() <= 0.25) {
num = 1;
}
if (Math.random() > 0.25 && Math.random() <= 0.5) {
num = 2;
}
if (Math.random() > 0.5) {
num = 3;
}
String suit = color[num];
String face = cards[(int) Math.ceil((Math.random() * 20 + 4) / 2)];
String card = suit + face;
deck.put(card);
}
deck.get();
}
}
[/code]
[b]问题补充:[/b]
[code="java"]
//我修改后的代码,觉得还行
import java.util.ArrayList;
import java.util.List;
public class Cards {
private List list;
public Cards() {
list = new ArrayList<String>();
}
public void put(String card) {
list.add(card);
}
public void get() {
System.out.println("你的牌是");
String cad;
for (int i = 0; i < list.size(); i++) {
cad = list.get(i);
System.out.print(cad + ",");
}
}
public static void main(String[] args) {
String[] cards = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10",
"J", "Q", "K" };
String color[] = { "黑桃", "红桃", "梅花", "方块" };
Cards deck = new Cards();
double random;
int num = 0;
for (int i = 0; i < cards.length; i++) {
random = Math.random();
if (random > 0.25 && random <= 0.5) {
num = 1;
}
if (random > 0.5&&random<=0.75) {
num = 2;
}
if (random > 0.75) {
num = 3;
}
String suit = color[num];
String face = cards[(int) Math.ceil((Math.random() * 20 + 4) / 2)];
String card = suit + face;
deck.put(card);
}
deck.get();
}
}
[/code]
[b]问题补充:[/b]
[code="java"]
import java.util.ArrayList;
import java.util.List;
// 应该是这个
public class Cards {
private List list;
public Cards() {
list = new ArrayList<String>();
}
public void put(String card) {
list.add(card);
}
public void get() {
System.out.println("你的牌是");
String cad;
for (int i = 0; i < list.size(); i++) {
cad = list.get(i);
System.out.print(cad + ",");
}
}
public static void main(String[] args) {
String[] cards = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10",
"J", "Q", "K" };
String color[] = { "黑桃", "红桃", "梅花", "方块" };
Cards deck = new Cards();
double random;
int num = 0;
String suit;
String face;
for (int i = 0; i < cards.length; i++) {
random = Math.random();
if (random > 0.25 && random <= 0.5) {
num = 1;
}
if (random > 0.5&&random<=0.75) {
num = 2;
}
if (random > 0.75) {
num = 3;
}
suit = color[num];
face = cards[(int) Math.ceil((Math.random() * 20 + 4) / 2)];
String card = suit + face;
deck.put(card);
}
deck.get();
}
}
[/code]
楼上的很细心,哈哈
帮助整理了一下
[code="java"]
import java.util.ArrayList;
import java.util.List;
import java.io.*;
public class Cards {
private List list;
public Cards() {
list = new ArrayList<String>();
}
public void put(String card) {
list.add(card);
}
public void get() {
System.out.println("你拿到的牌是");
String cad;
for (int i = 0; i < list.size(); i++) {
cad = list.get(i);
System.out.print(cad + ",");
}
}
public static void main(String[] args) {
String[] cards = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10",
"J", "Q", "K" };
String color[] = { "黑桃", "红桃", "梅花", "方块" };
Cards deck = new Cards();
String suit;
String face;
String card;
double random;
int num = 0;
for (int i = 0; i < cards.length; i++) {
num = 0;
random = Math.random();
if (random <= 0.25) {
num = 1;
}
if (random > 0.25 && random <= 0.5) {
num = 2;
}
if (random > 0.5) {
num = 3;
}
suit = color[num];
face = cards[(int) Math.ceil((random * 20 + 4) / 2)];
card = suit + face;
deck.put(card);
}
deck.get();
}
}
[/code]
初步看,还可以
[code="java"]if (Math.random() <= 0.25) {
num = 1;
}
if (Math.random() > 0.25 && Math.random() <= 0.5) {
num = 2;
}
if (Math.random() > 0.5) {
num = 3;
}[/code]
[quote="lovewhzlq"]初步看,还可以[/quote]
这串if-else问题很大呀。Math.random()有副作用,每次调用都不一定得到一样的值。应该在每轮循环开头int r = Math.random()之后就用r才好。
[code="java"]int r = Math.random();
if (r <= 0.25) {
num = 1;
}
if (r > 0.25 && r <= 0.5) {
num = 2;
}
if (r > 0.5) {
num = 3;
}[/code]
这个程序在SUN 官方教程 java tutorial 都有。。。并且还演示了使用Java 5枚举特性的版本。
JDK1.6的Collections有乱序的方法shuffle