当前位置: 代码迷 >> Java相关 >> [求助]编译后运行的结果跟我想象中大不同,看看
  详细解决方案

[求助]编译后运行的结果跟我想象中大不同,看看

热度:423   发布时间:2006-03-09 11:12:00.0
[求助]编译后运行的结果跟我想象中大不同,看看

下面是我想做到的,而运行后却不同.帮我改下代码.
//我没事做的一个打字游戏.呵呵,自己玩的.
//程序用来随机抽取5个英文字母显示在屏幕上,并让它们从上到下运动,
//然后让用户按键,看是否与屏幕显示的其中一个字符串相同,如果相同,就改变那个字符串的值,并显示.
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;
public class MangDa extends Applet implements Runnable,KeyListener
{
static Thread myThread;
static JFrame md;
String Zi26="";
String sz[]=new String[5];
int x[]=new int[5];
int y[]=new int[5];
public static void main(String args[])
{
md=new JFrame("盲打训练室");
MangDa m=new MangDa();
md.addKeyListener(m);
md.getContentPane().add(m);
m.zifuc();
m.cushi();
myThread=new Thread(m);
myThread.start();
md.setSize(800,600);
md.setVisible(true);
}

public void zifuc() //用来生成一个包含26个英文字母的字符串Zi26
{
for (int i=0;i<26;i++)
{
Zi26+=(char)((int)'a'+i);
}
}

public void cushi() //用来初始sz[],x[],y[]的值.
{
for (int i=0;i<5;i++)
{
int zc=(int)(Math.random()*26);
sz[i]=Zi26.substring(zc,zc+1);
x[i]=(int)(md.getWidth()*Math.random());
y[i]=0;
}
}

public void panduan() //用来判断sz[i]的y值是否要到达屏幕下边,如果是就把Y值变为0,并让所有的Y[I]值加1.
{
for (int i=0;i<5;i++)
{
if (y[i]>md.getHeight()-10)
y[i]=0;
y[i]++;
}
}

public void paint(Graphics g) //根据随机生成的SZ[I], 在屏幕X[I],Y[I]处显示字符串.
{
g.setColor(Color.black);
for (int i=0;i<sz.length;i++)
{
g.drawString(sz[i],x[i],y[i]);
}
}

public void run() //用线程循环更改Y值,并且在屏幕上重画SZ[I];
{
while(true)
{
panduan();
repaint();
try{
myThread.sleep(100);
}catch(Exception e) {}
}
}

public void keyPressed(KeyEvent k) //判断用户按键是否包含在屏幕上显示的5个字符串中,如果是就用chuli()方法解决.
{
String c=""+k.getKeyChar();
for (int i=0;i<sz.length;i++)
{
if (sz[i].equals(c))
{
chuli(i);
break;
}
}
}

public void keyReleased(KeyEvent k){}
public void keyTyped(KeyEvent k){}

public void chuli(int j) //当用户按键包含在屏幕上显示的5个字符串中(就是包含在sz[5]中),更改用户按键与数组中相同的那个数组的值.
{
da: while(true){ //使用循环是为了解决随机生成的字符包含在原来的SZ[5]中.
int zc=(int)(Math.random()*26);
String xinx=Zi26.substring(zc,zc+1);
for(int i=0;i<5;i++){
if (sz[j].equals(x)){
break;
}else if (i==4){
sz[j]=xinx;y[j]=0;x[j]=(int)(md.getWidth()*Math.random());
break da;
}else{
continue;
}
}
}
}

}

搜索更多相关的解决方案: 编译  结果  运行  想象  

----------------解决方案--------------------------------------------------------

----------------解决方案--------------------------------------------------------
  相关解决方案