需要帮助从另一种方法打印出一个数字

时间:2014-10-06 21:42:22

标签: java

我正在开发一个小型RPG项目,我无法用其他方法打印一个数字。

这里是主要的:

///////// SMTMain /////////

//Note: this is a parody game and not to be meant for actual retail purposes.

// SMTMain.java
import java.util.Scanner;

public class SMTMain
{
    public static void main( String[] args )
    {

    Scanner scan = new Scanner(System.in);

    SMTBattle battle = new SMTBattle();//runs the battle method, works fine.
    SMTStats stats = new SMTStats();

    //battle.battle(); commented out battle until i can get stats working
    System.out.print(stats.pcstats(str));
    //error, cannot find symbol    ^

   } // end main
} // end class SMTMain

包含所有统计信息的文件:

 ///////// SMTStats /////////

 // SMTStats.java

 import java.util.Scanner;
 public class SMTStats
 {

  Scanner input = new Scanner( System.in );

  ////////Main Stats///////////////
 private int lvl; //level
 private double str; //strength
 private double agi; //agility
 private double itl; //intellect
 private double wis; //wisdom
 private double lk; //luck
 //////Main Stats end/////////////

///////stats that are influenced by main stats or gear/////////
 private double hp; // health
 private double mp; //mana
 private double arm; //armor
 private double atk; //attack
 private double crit; //critical
 private double hit; //chance to hit
 private double def; //defense
 private double dge; //dodge
 ////////stats etc. ends//////////////////////////////////

 double pcstats; //player character function

 public double pcstats() //player character stats
 {
   //int lvl = 1; //worried about just str currently
   double str = 10.0;
   /*agi = 10;
   itl = 10;
   wis = 10;
   lk = 10;
   hp = 30;
   mp = 30;
   arm = 30;
   atk = 1.2 * str;
   crit = (1.5 * lk) / 2;
   hit = 1.5 * (agi * 2);
   def = arm / str;
   dge = (agi * 1);*/

   return pcstats;
 }
} // end class SMTStats

我尝试使用谷歌搜索我的错误,但我无法找到问题的答案,而且我仍然对java编程很新,我希望所有人都能引导我走向正确的方向。

1 个答案:

答案 0 :(得分:2)

Java尝试做什么:

Java试图找到一些名为 str 的变量。但 SMTMain 没有名为 str 的变量。 SMTMain 类可以&#t;""""您在另一个类中声明的内容( SMTStats )。


你可能想做什么:

变量 stats 是类 SMTStats 的对象(所谓的类实例)。 在 SMTStats 类中还需要一个方法(Object的功能)。 通常,您制作所谓的 getter setter 方法。


代码:

SMTStats 中str的getter:

public int getStr() {
    return str;
}

方法getStr()将变量str返回 SMTMain


SMTStats 中str的setter:

public void setStr(double newStr) {
    str = newStr;
}

方法setStr设置 SMTMain 的变量。


在课程 SMTMain 中,您现在可以从 SMTStats 打印变量str:

System.out.print(stats.getStr());

getter方法的名称暗示了你想要/返回的变量。


顺便说一句

一个不错的 java教程第25章是面向对象的编程):
http://chortle.ccsu.edu/java5/index.html