黑马程序员技术交流社区
标题:
思维模式的转向,结果导向->过程导向
[打印本页]
作者:
吃糖不蛀牙
时间:
2018-10-9 21:11
标题:
思维模式的转向,结果导向->过程导向
学习Java,不仅仅是技术,还有思维
例题:抽取扑克牌并打印
•模拟在一副扑克牌中,抽取第x张,第y张,第z张牌
•代码实现:花色+点数(例:红桃5)
由于之前已经练习过打印扑克牌(四种花色+A~K点数的组合)
第一反应就是将先前的代码拷贝,并将遍历打印改为抽样打印并输出
public static void main(String[] args) {
getCards(5,17,51);
}
static void getCards(int num1,int num2,int num3) {
String[] point = new String[]{"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
String[] suit = new String[]{"黑桃", "梅花", "红心", "方块"};
for (int i = 0; i < suit.length; i++) {
for (int j = 0; j < point.length; j++) {
}
}
System.out.print(suit[num1/13]+point[(num1-1)%13]+" ");
System.out.print(suit[num2/13]+point[(num2-1)%13]+" ");
System.out.print(suit[num3/13]+point[(num3-1)%13]+" ");
}
}
结果可以实现题目要求,但漏洞甚多:
1. 脱离实际,一副扑克牌含有54张牌,因拷贝之前的练习,遗漏大小王这2张牌
2. 打印输出时并没有利用数组下标这一特点进行因素提取,通过人为运算公式进行排序
3. 若需要提取并打印的因素较多,改动也比较大,过程繁琐
后根据参考进行更改优化
public static void main(String[] args) {
//获取一副扑克牌
String[] card = getCard();
//确定需要抽取的牌
int a=5,b=17,c=54;
String[] cards=getCards(card,a,b,c);
//打印抽取的牌
for (int i = 0; i < cards.length; i++) {
System.out.println(cards[i]+" ");
}
}
//制作一副扑克牌
static String[] getCard() {
String[] suit = new String[]{"黑桃", "梅花", "红心", "方块"};
String[] point = new String[]{"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
String[] card = new String[54];
int intdext = 0;
for (int i = 0; i < suit.length; i++) {
for (int j = 0; j < point.length; j++) {
card[intdext] = suit[i] + point[j];
intdext++;
}
}
card[52] = "小王";
card[53] = "大王";
return card;
}
//将需要抽取的牌新建一个数组,利用下标进行赋值
static String[] getCards(String[] card, int x, int y, int z) {
String[] cards = new String[3];
cards[0]=card[x-1];
cards[1]=card[y-1];
cards[2]=card[z-1];
return cards;
}
虽然都可以实现题目要求,但Java本身就是为了方便快捷的实现功能而存在,若脱离了实际,且没有较好的利用Java中的规则,则不能达到一个程序该有的优质的逻辑运算能力。
较之以往的学习工作经验,以结果导向为主的思维已经适合Java的环境,Java告诉我,脱离了完美的过程,就不可能有完美的结果。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2