JAVA学习交流

互帮互助,共同进步!

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  4 随笔 :: 6 文章 :: 26 评论 :: 0 Trackbacks
请同学们积极提问!
posted on 2006-09-29 08:33 Green 阅读(798) 评论(14)  编辑  收藏

评论

# re: 作业答疑 2006-09-29 12:57 wy
vb  回复  更多评论
  

# re: 作业答疑 2006-10-07 23:27 编程菜鸟lzq
对与我来说学习java的确有很大的难度。
主要是我的基础太烂了,c和c++都没有学好,对好多的基本概念都不是很熟悉。但是我很想把java学好,对与我的情况,我应该如何一步一步地学java。
  回复  更多评论
  

# re: 作业答疑 2006-10-08 13:46 刘发君
  我在做第二组作业的第四题时,有两个问题。请大家提提意见,帮忙解决一下。  
  第一个问题是:输入的最后一个月(12月)不能够显示出来(当然,我用的循环的方法我认为是可以显示的)。相应在统计年总天数的时候,就不能够统计到最后一个月的天数。以至于总的天数少了31天。
  第二个问题:对当前月不知道怎样用下划线来表明。  回复  更多评论
  

# re: 作业答疑 2006-10-08 20:44 小余
因为你的数组长度设为12,但是你是以0开头的,以11结束,所以不能显示12月,你应该在输出的时候每个月份,也就是你的下标加1  回复  更多评论
  

# re: 作业答疑 2006-10-10 10:36 Teacher
我只提几个问题:
1:你每天了用多少时间学习Java?有一个小时吗?
2:教材上的演示例子你都运行过吗?运行了你修改过吗?
3:当你遇见问题时你请教过吗?你有没有不解决就誓不修的精神?
4:基础差你努力过吗?知道自己的不足就要加倍的付出, 你做到了吗?

基础差不是借口, 努力才有机会. 从现在做起为时未晚!!  回复  更多评论
  

# re: 作业答疑 2006-10-10 20:09 Teacher
@编程菜鸟lzq
我只提几个问题:
1:你每天了用多少时间学习Java?有一个小时吗?
2:教材上的演示例子你都运行过吗?运行了你修改过吗?
3:当你遇见问题时你请教过吗?你有没有不解决就誓不修的精神?
4:基础差你努力过吗?知道自己的不足就要加倍的付出, 你做到了吗?

基础差不是借口, 努力才有机会. 从现在做起为时未晚!!  回复  更多评论
  

# re: 作业答疑 2006-10-17 15:49 谯老师
public class RandomTest {

public static void main(String[] args) {
anotherMethod(5);
}

static void oneMethod(int length) {
String s = "";
String s1 = "";
int j = 0;

/**
* 利用字符串来比较是否重复,有重复则重选一个,选几个,i就小于几就行了
*/
for (int i = 0; i < length; i++) {

/**
* 调用random方法,随机选数,它选出的是0-0.999...之间的数,
* 所以乘以length,就是1-length之间的整型数。
*/

j = (int) (Math.random() * length);
s1 = j + "";
if (s.indexOf(s1) != -1) {
i--;
continue;
}
s = s + " " + s1;
//大出来看看,绝对不重,保存下来就行了
System.out.println(j);
}

}

static void anotherMethod(int length) {
int[] a = new int[length];

for (int i = 0; i < a.length; i++) {
a[i] = (int) (Math.random() * length)+1;
for (int j = 0; j < i; j++) {
if (a[j] == a[i]) {
i--;
break;
}
}
}
for (int j = 0; j < length; j++) {
System.out.println(a[j]);
}
}

static void thirdMethod(int length) {
int numbers[] = new int[length];
/**
* 初始化数字
*/
for (int k = 0; k < length; k++) {
numbers[k] = k;
}
int random[] = new int[length];
/**
* 比如ranInt(54)产生一个随机数5,把a[5]的牌抽出数组,
* 然后再用ranInt(53)抽出另外一张,ranInt(52)
*/
for (int i = length - 1; i >= 0; i--) {
int selected = (int) (Math.random() * i)+1;
random[i] = numbers[selected];
numbers[selected] = numbers[i];
}

for (int i = 0; i < length; i++) {
System.out.print(random[i]);
}
}

static int genRandomCut(int length) {
int randomnum = (int) (Math.random() * length);
//System.out.print(randomnum);
return randomnum ;
}

static int[] getRandom(int length){
int[] a = new int[length];
loop:
for (int i = 0; i < a.length; i++) {
a[i] = (int) (Math.random() * length);
for (int j = 0; j < i; j++) {
if (a[j] == a[i]) {
i--;
continue loop;
}
}
}
for (int j = 0; j < length; j++) {
System.out.println(a[j]);
}
return a;
}

static void cutCard(int length) {
int[] cards = new int[length];
cards = getRandom(length);

int randomcut = genRandomCut(length);

int temp[] = new int[length];
int startPoint = randomcut;
for(int i=0; i<length-randomcut; i++){
temp[i]=cards[startPoint++];
}
for(int k=0; k<randomcut; k++){
temp[length-randomcut+k] = cards[k];
}
System.out.println("RandomCut:"+randomcut);
for (int i = 0; i < temp.length; i++) {
System.out.println(temp[i]);
}

}
}  回复  更多评论
  

# re: 作业答疑 2006-10-18 13:06 SKYLCT
老师介绍一下现在最流行的界面开发工具(JAVA类)!!  回复  更多评论
  

# re: 作业答疑 2006-10-19 09:28 Raylay Zhang
import java.util.List;
import java.util.Collections;
import java.util.ArrayList;
import java.util.Random;
class Card{
private String value; //扑克牌的值
private String color; //扑克牌的花色
public Card(String s1,String s2){
.....
}
public String GetValue(){
.....
}

public String GetColor(){
.....
}
}//一张牌的类型

我已经建立好了一个Card[]Porke=new Card[54];且对其进行了初始化及相关赋值,即建立好了一副牌.
主要问题是出在洗牌的时候.部分代码如下:

List cards = new ArrayList();
//向其中添加元素;
for(int i = 0; i < 54; i++) {
cards.add(Porke[i]); //即将Porke中各张牌给这个list中
}
Collections.shuffle(cards,new Random()); //将cards中元素顺序打乱
建立一个新的Card newcard[54];
newcard=cards.toArray(); //将list cards转化成对应元素类型的数组
可是在执行的时候就是这个地方出错.错误是: 类型不一致

  回复  更多评论
  

# re: 作业答疑 2006-10-31 13:37 谯老师
名称: 实现洗牌算法

分析:
识别类:
public class Card{}; //一张牌
public class Poker{}; //一副牌
public class PlayGame{}; //对牌进行的相关操作,包括洗牌,切牌


识别属性:
Card应包括的属性有: private color(花色),private value(大小);
Poker应包括的属性有:Card Cards[54]; //包含54张牌元素的数组,用来描述一副牌;
public String color[4]; //包含4种花色
public String value[13]={"A","2","3",......,"K"}

定义类:
Card{

属性: private color //花色
private value //值,大小
构造函数:
根据需要,牌大致可划分为两种,一种是A,2....K.(普通牌),另外一种就是大王,小王
Card(String value,String color){} //用来初始化普通牌
Card(String value){} //传入一个参数,用来初始化大王,小王
方法:
为了得到private的属性,定义以下方法来获取
String getColor(){}; //得到这张牌的花色
String getValue(){}; //用来得到这张牌子的大小;

}

Poker{

属性: 因为每副牌都有共同属性:四种花色,有从A,2....K十三种值类型,每副牌都有54张,故有以下属性
public String color[4]={.....}
public String Value[13]={.....}
Card Cards[54];
构造函数:
根据以上的属性,分析可知一副牌初始化时不需要传参,
Porke{
......
}
方法:
每副牌都应该要有一个显示的方法,打印出Cards[54]的内容.如下:
public void print(){}

}

PlayGame{
分析可知,在该类中我们需要做的是定义一个洗牌的方法,切牌的方法,还可包括main函数。
无需构造函数,

方法:
洗牌方法: public Poker XiPai(){}
洗牌算法描述:
用random产生一组随机且不重复的数,用int array[54] 来保存,其中每一个元素都对应 着Cards[54]的下标,
将Cards[54]以该int array[54]的值的顺序来存放,则是一组随机的Card元素,从而实现了洗 牌算法
最后返回值为新的序列的Cards[54]
切牌方法:
public Poker DaoPai(){}
切牌算法描述:
用random产生一个随机数,找到该随机数为下标的Cards[54]的元素。将该元素以前的元素 接到该Cards[54]数组的后面。最后返回一个新的序列的Cards[54]。从而实现倒牌算法
main函数:
通过对Poker new一个新的对象,来进行洗牌,倒牌的操作

}

  回复  更多评论
  

# 请问我的方法为什么不好 2006-11-02 22:35 luomeilun
我的方法也可以得到结果,代码也少,但是感觉我的方法不好,我基础差不知道不好在那些方面
public class RandomTest {

static void oneMethod(int length)
{
String s = "";
String s1 = "";
int j = 0;
for (int i = 0; i < length; i++)
{
j = (int) (Math.random() * length);
s1 = j + "";
if (s.indexOf(s1) != -1)
{
i--;
continue;
}
s = s + " " + s1;
String a[]={"黑2","红2","方快2","梅花2","方三",} //太长老要写54个暂时写5个
System.out.println(a[j]);
}
}


public static void main(String[] args){
RandomTest M=new RandomTest() ;

;
M. oneMethod(5);
}
}
  回复  更多评论
  

# 请问我的方法为什么不好 2006-11-02 22:35 luomeilun
我的方法也可以得到结果,代码也少,但是感觉我的方法不好,我基础差不知道不好在那些方面
public class RandomTest {

static void oneMethod(int length)
{
String s = "";
String s1 = "";
int j = 0;
for (int i = 0; i < length; i++)
{
j = (int) (Math.random() * length);
s1 = j + "";
if (s.indexOf(s1) != -1)
{
i--;
continue;
}
s = s + " " + s1;
String a[]={"黑2","红2","方快2","梅花2","方三",} //太长老要写54个暂时写5个
System.out.println(a[j]);
}
}


public static void main(String[] args){
RandomTest M=new RandomTest() ;

;
M. oneMethod(5);
}
}
  回复  更多评论
  

# re: 作业答疑 2006-12-25 21:42 曾崇杰
想了N 天的问题,作业一直没有交.请高人指点.

司机这个类里面要求没有车,那在drive函数里面司机开什么呀.   回复  更多评论
  

# re: 作业答疑 2009-03-29 15:15 tiny
要实现小球在往返弹动效果。。请问怎么修改,
import javax.swing.*;
import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.awt.event.*;
import java.util.*;
import java.text.*;
public class GameFrame {

public GameFrame() {
Frame app = new Frame("GameFrame");
app.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
drawBall drawB = new drawBall();
app.add(drawB, BorderLayout.CENTER);
app.pack();
app.setVisible(true);
app.setLocationRelativeTo(null);
drawB.gameLoop();
}

public class drawBall extends JPanel implements Runnable {
private int x,dx;
private int y,dy;
private int diameter;
private int width;
private int heigth;
private Image im;
private Graphics dbg;
private Thread gamethread;
private static final int FPS=100;


public drawBall() {
x=100;y=100;
dx=0;dy=0;// 球的移动量
diameter=100;//半径
width=500;
heigth=500;
setBackground(Color.pink);
setPreferredSize(new Dimension(width, heigth));
}
public void gameStart(){

gamethread = new Thread(this);
gamethread.start();
}
public void gameLoop(){
while(true){
gameUpdate();
gameRender();
gamePaint();
}
}


public void gamePaint() {
Graphics g;
try {
g = this.getGraphics();
if (g != null && im != null) {
g.drawImage(im, 0, 0, null);
}
g.dispose();
} catch (Exception e) {
}
}

public void gameRender() {
if (im == null) {
im = createImage(width, heigth);
if (im == null) {
System.out.println("im is null");
} else {
dbg = im.getGraphics();
}
}
dbg.setColor(Color.pink);
dbg.fillRect(0, 0, width, heigth);
dbg.setColor(Color.blue);
dbg.fillOval(x, y, diameter, diameter);
}

public void gameUpdate() {
Random random = new Random();

switch (random.nextInt(4)) {
case 0:
x +=5;
break;
case 1:
x -=5;
break;
case 2:
y +=5;
break;
case 3:
y -=5;
break;
}


//x += dx; y += dy;

if(x>=width-diameter||x-diameter<=0) {
y+=dy;
x-=dx;
dx=(-dx);

}// 超出左右边界
if(dx>0){ x=x+dx+randomNum; dy=(-dy+randomNum); }
else { x=x+dx-randomNum; dy=(-dy-randomNum); }
else if (y>=heigth-diameter||y-diameter<=0){
y-=dy;
x+=dx;
dy=(-dy);

}// 超出上下边界

}
public void run() {
long beforeTime,timeDiff,sleepTime;
long period=1000/FPS;
beforeTime = System.currentTimeMillis();
while(true){
gameUpdate();
gameRender();
gamePaint();

timeDiff=(System.currentTimeMillis() - beforeTime)/1000000L;
sleepTime = period - timeDiff;
if(sleepTime<=0)
sleepTime=2;
try {
Thread.sleep(sleepTime);
} catch (InterruptedException ex) { }
beforeTime=System.currentTimeMillis();
System.out.println("sleepTime is:"+sleepTime);
}

}

}

public static void main(String[] args) {
new GameFrame();

}
}
  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: