当前位置:编程学习 > JAVA >>

帮忙看下是什么问题

[code=java][code=objc]
[/code][/code]
import java.util.Scanner;
public abstract class Player{

String name;   //定义游戏者姓名
int score;    //定义游戏者积分
//构造方法进行初始化
public class Computer(){
String name="匿名";
int score=0; 
}
//定义出拳抽象方法
public abstract int showFist();

public class Person extends Player{
//用户出拳方法
public int showFist(){
Scanner input=new Scanner(System.in);
System.out.print ("\n 请出拳:1.剪刀 2.石头 3.布(输入相应数字):");
int show=input.nextInt();
switch(show){
case 1:
System.out.println ("你出拳: 剪刀");
break;
case 2:
System.out.println ("你出拳: 石头");
break;
case 3:
System.out.println ("你出拳: 布");
break;
}
return show;
}
}
//计算机类
public class Computer extends Player{
//计算机出拳方法
public int showFist(){
int show=(int)(Math.random() * 10)%3+1;//产生随机数,表示计算机出拳
switch(show){
case 1:
System.out.println (name+"出拳: 剪刀");
break;
case 2:
System.out.println (name+"出拳: 石头");
break;
case 3:
System.out.println (name+"出拳: 布");
break;
}
return show;
}
}
public class Game{
Person person;//甲方
Computer computer;//乙方
int count;//对战次数
//初始化
public void initial(){
person=new Person();
computer=new Computer();
count=0;
}
//开始游戏
public void startGame(){
System.out.println("----------------欢 迎 进 入 游 戏 世 界----------------\n");
System.out.println("\n\t\t******************************");
System.out.println("\t\t** 猜拳、开始   **");
System.out.println("\t\t******************");

System.out.println("\n\n出拳规则:1.剪刀 2.石头 3.布");
/*选择对方角色*/
System.out.print("请选择角色(1: 地主 2. 农民 3.路人):");
Scanner input=new Scanner(System.in);
int role=input.nextInt();
if(role==1){
computer.name="地主";
}else if (role==2){
computer.name="农民";
}else if (role==3){
computer.name="路人";
}

System.out.print("\n 要开始吗?(y/n)");
String con=input.next();
int perFist;    //用户出的拳
int compFist;  //计算机出的拳
while (con.equals("y")){
/*出拳*/
perFist=person.showFist();
compFist=computer.showFist();
/*裁决*/
if ((perFist==1 && compFist==1)||
(perFist==2 && compFist==2)||
(perFist==3 && compFist==3)){
System.out.println("结果: 和局、哈哈,没想到吧!\n");//平局
}else if ((perFist==1 && compFist==3)||
(perFist==2 && compFist==1)||
(perFist==3 && compFist==2)){
System.out.println("结果: 恭喜、你已经超神了!");//用户赢
person.score++;
}else{
System.out.println("结果说:(- -!) 你输了、真水!\n");//计算机赢了
computer.score++;
}
count++;
System.out.print("\n是否开始下一轮(y/n):");
con=input.next();
}
/*显示结果*/
showResult();
}
//显示比赛结果
public void showResult(){
/*显示最后结果*/
System.out.println("-----------------------------------------------------");
System.out.println(computer.name+"VS"+person.name);
System.out.println("对战次数:"+count);
int result=calcResult();
if(result==1){
System.out.println("结果:打成平手、下次再和你一绝高下!");
}else if(result==2){
System.out.println("结果:恭喜恭喜!");//用户获胜
}else{
System.out.println("结果:呵呵、下次加油啊!");//计算机获胜
}
System.out.println("---------------------------------------------");
}
//计算机比赛结果
public int calcResult(){
if (person.score==computer.score){
return 1;
}else if(person.score>computer.score){
return 2;
}else{
return 3;
}
}
}
//测试类
public class StatGuess{
//人机互动版猜拳游戏程序入口
//@param args
public static void main(String args[]){
Game game=new Game();
game.initial();
game.startGame();
}
}
}
--------------------编程问答--------------------
import java.util.Scanner;
public abstract class Player{

String name;   //定义游戏者姓名
int score;    //定义游戏者积分
//构造方法进行初始化
public class Computer(){
String name="匿名";
int score=0; 
}
//定义出拳抽象方法
public abstract int showFist();

public class Person extends Player{
//用户出拳方法
public int showFist(){
Scanner input=new Scanner(System.in);
System.out.print ("\n 请出拳:1.剪刀 2.石头 3.布(输入相应数字):");
int show=input.nextInt();
switch(show){
case 1:
System.out.println ("你出拳: 剪刀");
break;
case 2:
System.out.println ("你出拳: 石头");
break;
case 3:
System.out.println ("你出拳: 布");
break;
}
return show;
}
}
//计算机类
public class Computer extends Player{
//计算机出拳方法
public int showFist(){
int show=(int)(Math.random() * 10)%3+1;//产生随机数,表示计算机出拳
switch(show){
case 1:
System.out.println (name+"出拳: 剪刀");
break;
case 2:
System.out.println (name+"出拳: 石头");
break;
case 3:
System.out.println (name+"出拳: 布");
break;
}
return show;
}
}
public class Game{
Person person;//甲方
Computer computer;//乙方
int count;//对战次数
//初始化
public void initial(){
person=new Person();
computer=new Computer();
count=0;
}
//开始游戏
public void startGame(){
System.out.println("----------------欢 迎 进 入 游 戏 世 界----------------\n");
System.out.println("\n\t\t******************************");
System.out.println("\t\t** 猜拳、开始   **");
System.out.println("\t\t******************");

System.out.println("\n\n出拳规则:1.剪刀 2.石头 3.布");
/*选择对方角色*/
System.out.print("请选择角色(1: 地主 2. 农民 3.路人):");
Scanner input=new Scanner(System.in);
int role=input.nextInt();
if(role==1){
computer.name="地主";
}else if (role==2){
computer.name="农民";
}else if (role==3){
computer.name="路人";
}

System.out.print("\n 要开始吗?(y/n)");
String con=input.next();
int perFist;    //用户出的拳
int compFist;  //计算机出的拳
while (con.equals("y")){
/*出拳*/
perFist=person.showFist();
compFist=computer.showFist();
/*裁决*/
if ((perFist==1 && compFist==1)||
(perFist==2 && compFist==2)||
(perFist==3 && compFist==3)){
System.out.println("结果: 和局、哈哈,没想到吧!\n");//平局
}else if ((perFist==1 && compFist==3)||
(perFist==2 && compFist==1)||
(perFist==3 && compFist==2)){
System.out.println("结果: 恭喜、你已经超神了!");//用户赢
person.score++;
}else{
System.out.println("结果说:(- -!) 你输了、真水!\n");//计算机赢了
computer.score++;
}
count++;
System.out.print("\n是否开始下一轮(y/n):");
con=input.next();
}
/*显示结果*/
showResult();
}
//显示比赛结果
public void showResult(){
/*显示最后结果*/
System.out.println("-----------------------------------------------------");
System.out.println(computer.name+"VS"+person.name);
System.out.println("对战次数:"+count);
int result=calcResult();
if(result==1){
System.out.println("结果:打成平手、下次再和你一绝高下!");
}else if(result==2){
System.out.println("结果:恭喜恭喜!");//用户获胜
}else{
System.out.println("结果:呵呵、下次加油啊!");//计算机获胜
}
System.out.println("---------------------------------------------");
}
//计算机比赛结果
public int calcResult(){
if (person.score==computer.score){
return 1;
}else if(person.score>computer.score){
return 2;
}else{
return 3;
}
}
}
//测试类
public class StatGuess{
//人机互动版猜拳游戏程序入口
//@param args
public static void main(String args[]){
Game game=new Game();
game.initial();
game.startGame();
}
}
}
--------------------编程问答--------------------
//构造方法进行初始化
    public class Computer(){
        String name="匿名";
        int score=0; 
    }


这是构造方法吗? --------------------编程问答-------------------- 抽象类里面,那个是构造方法吗? --------------------编程问答--------------------
引用 3 楼 guochaobest 的回复:
抽象类里面,那个是构造方法吗?

注释问题。。 --------------------编程问答-------------------- 很明显,你类名后面多了() --------------------编程问答--------------------
引用 5 楼 wapigzhu 的回复:
很明显,你类名后面多了()
去了的话错误多了 --------------------编程问答-------------------- 1

    //构造方法进行初始化
    public class Computer(){
        String name="匿名";
        int score=0; 
    }

这个看楼主的意思是Computer类的构造函数,那应该放在 Computer类里。
而且要去掉前面的类型说明。(那样就是构造方法里的局部变量了。)

class Computer extends Player
{
public Computer()//放在Computer类里
{
name="匿名";//去掉String 说明。
score=0; //去掉int说明。
}


2  让各个类都独立出来,按照楼主那样定义,Computer Person等都是Player的内部类了,有点乱。


abstract class Player//单独就是个抽象类。
{
String name;   //定义游戏者姓名
int score;    //定义游戏者积分
//构造方法进行初始化

//定义出拳抽象方法
public abstract int showFist();
}

3  除了测试类外,其他都定义成包访问权限就行。(也就是 去掉public).
楼主试试看,我改一下正常运行了。
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,