java - 我的 public int 没有使用正确的参数,是我的调用错误吗?
问题描述
我是 java netbeans 的新手,所以我非常感谢任何帮助。我的问题是我班级中的公共 int 不适用于我在主程序中提供的参数。(就像我的“mana”在“public int fagy_csapas”中没有使用“25”,而是使用“0”)我无法在任何地方找到答案。难道我打错电话了?
主程序:
package tesztelő;
/**
*
* @author Bence
*/
public class Tesztelő {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Teszt x=new Teszt();
x.maxhp=30;
x.hp=30;
x.maxmana=25;
x.mana=25;
x.str=3;
x.vit=3;
x.dex=4;
x.luc=1;
x.wis=3;
x.intel=4;
x.atk_slash_min=1;
x.atk_slash_max=8;
x.atk_pierce_min=1;
x.atk_pierce_max=6;
x.atk_blunt_min=1;
x.atk_blunt_max=4;
Teszt TesztObject = new Teszt();
TesztObject.fagy_csapas();
System.out.println(x.mana);
}
}
我的第二堂课:
package tesztelő;
/**
*
* @author Bence
*/
public class Teszt {
//ALAP STATISZTIKÁK
int maxhp;
int hp;
int maxmana;
int mana;
int str; //sebzés
int vit; //fizikai védelem
int dex; //kitérés
int luc; //kritikál
int wis; //mágikus védelem
int intel; //mágikus támadás
//PÁNCÉL
int def_slash;
int def_pierce;
int def_blunt;
int def_fire;
int def_water;
int def_wind;
int def_earth;
int def_thunder;
int def_light;
int def_dark;
//FEGYVER
int hitmin=1, hitmax=100;
int hitrate=100;
int hitrange = hitmax - hitmin + 1;
boolean crit=false;
int atk_slash_min=1;
int atk_slash_max=10;
int slash_range = atk_slash_max - atk_slash_min + 1;
int atk_pierce_min;
int atk_pierce_max;
int atk_blunt_min;
int atk_blunt_max;
int atk_slash_bonus;
int atk_pierce_bonus;
int atk_blunt_bonus;
//ENEMY STATISZTIKÁK
int en_hp=20;
int en_mana;
int en_str; //sebzés
int en_vit; //fizikai védelem
int en_dex=0; //kitérés
int en_luc; //kritikál
int en_wis; //mágikus védelem
int en_intel; //mágikus támadás
int en_def_slash=3;
int en_def_pierce;
int en_def_blunt;
int en_def_fire;
int en_def_water=0;
int en_def_wind;
int en_def_earth;
int en_def_thunder;
int en_def_light;
int en_def_dark;
//VARÁZSPENGE KÉPESSÉGEK
public int fagy_csapas()
{
int damage;
int damage1;
//TALÁLAT
int hitrand = (int)(Math.random() * hitrange) + hitmin;
if (hitrand <= hitrate - (en_dex*2))
{
System.out.println("Talált! "+hitrand);
hitrand = (int)(Math.random() * hitrange) + hitmin;
if(hitrand <= luc)
{
crit=true;
}
//SEBZÉS
damage= (int)(Math.random() * slash_range) + atk_slash_min;
int en_hp1=en_hp;
if ((damage+atk_slash_bonus)<en_def_slash)
{
damage=en_def_slash;
}
en_hp = en_hp - ((damage+atk_slash_bonus)-en_def_slash);
damage1=damage;
System.out.println("Vágó sebzés: "+damage+" - védelem: "+en_def_slash+"Enemy hp: "+en_hp1+" ----> "+en_hp );
//KRITIKUS SEBZÉS
if(crit=true)
{
System.out.println("Kritikális támadás! ");
damage= (int)(Math.random() * slash_range) + atk_slash_min;
en_hp1=en_hp;
if ((damage+atk_slash_bonus)<en_def_slash)
{
damage=en_def_slash;
}
en_hp = en_hp - ((damage+atk_slash_bonus)-en_def_slash);
damage1=damage1+damage;
System.out.println("Sebzés: "+damage+" - védelem: "+en_def_slash+"Enemy hp: "+en_hp1+" ----> "+en_hp );
crit=false;
}
//MÁGIKUS SEBZÉS
en_hp1=en_hp;
if ((damage1)<en_def_water)
{
damage=en_def_water;
}
en_hp = en_hp - ((damage1)-en_def_water);
System.out.println("Sebzés: "+damage1+" - védelem: "+en_def_water+"Enemy hp: "+en_hp1+" ----> "+en_hp );
}
else
System.out.println("Nem talált!");
if(mana>=5)
{
System.out.print("Mana: "+mana+" -----> ");
mana=mana-5;
System.out.println(mana);
}
else
{
System.out.println("Nem volt elég manád, hogy elhasználd, így a pengéből áradó fagyos aura a csapás által rád is robban.");
System.out.println("Mana: "+mana);
System.out.print("Hp: "+hp+" ------> ");
hp=hp-10;
System.out.println(hp);
}
return mana;
}
}
解决方案
您正在创建一个X对象 ( ) 并为属性 ( )Teszt x=new Teszt();
赋值x.mana=25;
接下来,您创建另一个对象TesztObject ( Teszt TesztObject = new Teszt();
) 并使用该对象 ( ) 调用方法TesztObject.fagy_csapas();
。但是在TesztObject中,mana的值仍然是“0”,这是 int 的默认值
因此尝试使用以下代码:
package tesztelő;
/**
*
* @author Bence
*/
public class Tesztelő {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Teszt x=new Teszt();
x.maxhp=30;
x.hp=30;
x.maxmana=25;
x.mana=25;
x.str=3;
x.vit=3;
x.dex=4;
x.luc=1;
x.wis=3;
x.intel=4;
x.atk_slash_min=1;
x.atk_slash_max=8;
x.atk_pierce_min=1;
x.atk_pierce_max=6;
x.atk_blunt_min=1;
x.atk_blunt_max=4;
x.fagy_csapas();
System.out.println(x.mana);
}
}
推荐阅读
- java - 如何在java中的charAt等字符串方法中使用long?
- php - mysqli 在本地机器上运行良好,但在 Google App Engine 上却不行,这是怎么回事?
- xpath - 带单引号的 AEM XPATH 查询问题
- c++ - QT4:connect() 与 lambda 函数,编译错误:QThread::started() 受保护
- python - Selenium:错误来自使用“if”来确定元素是否存在
- windows - 如何在程序集中打开目录中的文件
- symfony - 用户在 Symfony 中注册后登录并设置 remember_me cookie
- java - weblogic12C的JSTL表达式错误
- angular - Angular 6 - 导入 BrowserAnimationsModule 时的渲染问题(Openlayers)
- r - 混合 geom_line 和 geom_point 图:从色标中删除标记