Java返回类型和方法失败

时间:2013-11-12 04:57:48

标签: java methods static-methods void return-type

我希望你过得愉快。我之所以再次寻求帮助,是因为我被要求执行一项我显然无能为力的任务。我不希望在指导中给出答案,也许只是一点点答案,因为我和专业的泥摔跤手一样厚。

https://wiki.ittc.ku.edu/ittc/EECS168:Homework3

如果你想看,上面是我的任务,但这只是背景故事。

public class Fighter {
public static void main(String[] args){
    String name;
    int hitPoints;
    int defenseLevel;
    int attackSpeed;
    Scanner input=new Scanner(System.in);


    public static void hitPoints(){
        int hitPoints;
        do{
            Scanner input=new Scanner(System.in);
            System.out.println("What is the hit points for the fighter");
            hitPoints=input.nextInt();
            return hitPoints;
        }while (hitPoints<=50);
        return 0;
    }
}

我很确定循环它是完全错误的,它有点令人沮丧。现在最大的问题是我得到一个错误“令牌上的语法错误”void“,@ expected”我也尝试了不同的类型,如int和double。没有骰子。我几乎都希望这不是一件非常简单的事情,因为我已经在这个愚蠢的小事,琐碎的事情上花了大约4个小时的努力。赋值说只使用一种void方法:

在Fighter Class中写两个方法;

public void input()
public boolean attack(Fighter opponent) 

然而,我无法弄清楚如何使用它,所以我打算使用4或5,但显然我不擅长我做的事情。我为诋毁编程的好名而道歉,但是人们可能提供的任何帮助都将不胜感激。

一切顺利,

尼克

2 个答案:

答案 0 :(得分:1)

首先要做的事情。您需要在main之外使用hitPoints()方法。您无法将其嵌套在main()方法中。

而且,hitPoints()的返回类型为void,您在方法中有return语句。将返回类型更改为int,以便您可以从此方法返回int值到调用方法。

public static int hitPoints(){

此外,由于它是do-while循环(退出检查循环),因此您不需要默认返回。而是默认将hitPoints初始化为0

public static int hitPoints() { // return type is int, to return an int value
    int hitPoints = 0; // default value
    do {
        Scanner input = new Scanner(System.in);
        System.out.println("What is the hit points for the fighter");
        hitPoints = input.nextInt();
        return hitPoints;
    } while (hitPoints <= 50);
    // return 0; // not required, as its a do-while loop above
}

答案 1 :(得分:0)

两个问题:

首先,您尝试将方法封装在不合法的方法中。将hitPoints移到主method之外。

其次,您尝试从hitPoints方法返回一个整数值,但根据其定义,它不返回任何内容:

public static void hitPoints()

因此,要么更改hitPoints方法签名以返回int,要么从方法中删除return语句,如下所述:

 return 0;