【发布时间】:2015-08-25 01:11:56
【问题描述】:
我必须为课程编写代码。这些是要求:
一个类应该是带有main方法的Controller。
其他类应该:
- 做一些动作
- 传入变量
- 至少使用一个 if 语句
- 有私有方法
- 有一些 getter 和 setter。
我已经完成了大部分工作。我遇到了一个问题,我希望用户输入“前进”,然后将体力降低 5,并在 Sonsole 中显示一条消息,“你失去 5 体力”。而且我还希望用户能够输入“休息”并将耐力增加 5(上限为 100,并且让控制台说,“耐力增加到 #。”
我不知道如何增加/减少耐力。每当我尝试某事时,都会出错。
如果我有一些我不需要的东西,请告诉我它是什么以及为什么我应该删除它。如果有什么是公开的并且不需要公开,请告诉我为什么不应该公开。我的老师说,以后每次公开不需要公开的东西都会被扣 5 分。
代码如下:
控制器类:
import java.io.*;
import java.util.Scanner;
public class Controller {
public static void main(String[] args){
System.out.println("Type your name here:");
Scanner scan = new Scanner(System.in);
String input = scan.nextLine();
Player playerOne = new Player(input);
playerOne.setStrength(78);
playerOne.setHealth(99);
playerOne.setStamina(67);
playerOne.printplayer();
System.out.println("Type 'Go Forward' to move forward");
Scanner mscan = new Scanner(System.in);
//mscan = movement scan
String minput = scan.nextLine();
if(minput.equals("Go Forward"))
//minput = movement input
System.out.println("You lose 5 stamina.");
//Getting an error here : 'stamina cannot be resolved to a variable'
System.out.println("Stamina: " + stamina);
if(minput.equals("Rest"))
//Getting an error here : 'stamina cannot be resolved to a variable'
System.out.prinln("Stamina has been increased to " + stamina);
scan.close();
}
}
还有播放器类:
import java.util.Scanner;
public class Player{
public String name;
private String input;
private double health;
public double strength;
public double stamina;
//Player Name
public Player (String input){
name = input;
}
//Player Health
public void setHealth(double playHp){
health = playHp;
}
//Player Strength
public void setStrength(double playStrn){
strength = playStrn;
}
//Player Stamina
public void setStamina(double playStam){
stamina = playStam;
}
public void printplayer(){
System.out.println("name : " + name );
System.out.println("Health :" + health);
System.out.println("Strength :" + strength);
System.out.println("Stamina :" + stamina);
}
private void reduceStamina() {
int stamina;
}
public int getStamina() {
return 0;
}
}
System.out.println("Type 'Go Forward' to move forward");
Scanner mscan = new Scanner(System.in);
//mscan = movement scan
String minput = scan.nextLine();
if(minput.equals("Go Forward"))
//minput = movement input
System.out.println("You lose 5 stamina.");
//Getting an error here : 'stamina cannot be resolved to a variable'
System.out.println("Stamina: " + stamina);
if(minput.equals("Rest"))
//Getting an error here : 'stamina cannot be resolved to a variable'
System.out.prinln("Stamina has been increased to " + stamina);
scan.close();
}
}
【问题讨论】:
-
"I don't know how to increase/decrease the stamina though. Whenever I try something, I get an error."-- 请显示您尝试过的内容以及由此导致的完整错误消息。否则,我们将不知道您可能做错了什么,或者您可能做出了哪些不正确的假设。 -
stamina是Player的一个字段,你应该在你的Player类中提供一个getStamina方法,并在你想显示它时使用playerOne.getStamina()。 -
@MadProgrammer 你是对的,但他将耐力设置为公开,所以这看起来不像是整体问题。这是错误的,但不会像他那样产生错误。
-
@lacraig2 "//这里出现错误:'stamina cannot be resolved to a variable'",OP根本没有引用
Player实例,他们'刚刚在称为stamina的main方法中使用了一个未定义的变量...并且不要让我开始使用public字段 -
@MadProgrammer 我也不喜欢它,但他的问题是他没有调用 playerOne.stamina (或 getStamina() 如果他正确设置了方法,而不是他没有正确保护他的数据。