Java中与字符串相关的问题:为什么我的级别提升/降级没有正确更新?

cfreq744

我试图用Java编写此程序。

我可以从构造函数中读取字符串,并使用定界符将字符串分开。但是,每次尝试调用诸如promote()这些值之类的方法时,该值都保持不变。布尔方法promote()显示true,但级别不会增加。

例如:如果构造函数的字符串是:"Harry#wizard#broom",则:

name <- "Harry"
level <- "wizard"
supplies <- "broom"

namelevel以及broom所有私有数据实例(我不知道是否应该使用数据实例或局部变量)。

但是,每当我调用harry.promote()它返回true但级别保持不变时,它都不会升级。中的初始值level似乎会覆盖它。

我写了下面的代码:

import java.util.Scanner;
import java.io.*;

public class Magician
{
    private String name;
    private String level;
    private String supplies;
    private double health;
    private int galleons;

    public Magician(String phrase) //phrase will be sth like this: Harry#wizard#broom#staff
    {

        health = 4000;
        galleons = 200;
        Scanner firstScan = new Scanner(details);
        firstScan.useDelimiter("#");
        name = firstScan.next();
        level = firstScan.next();
        if (firstScan.hasNext())
        {
            supplies = firstScan.next(); 
            while (firstScan.hasNext())
            {        
                supplies = supplies + " " + firstScan.next();
            }
        }
        else 
        {
            supplies ="";
        } 

    }
    public String getName()
    {
        return name;
    }
    public String getLevel()
    {
        return level;
    }
    public int getGalleons()
    {
        return galleons;
    }
    public double getHealth()
    {
        return health;
    }
    public String getSupplies()
    {
        return supplies;
    }
    //Mutators 
    public void setName(String nameUpdate)
    {
        name = nameUpdate;
    }
    public void setLevel(String levelUpdate)
    {
        level =levelUpdate;
    }
    public void setGalleons(int galleonsUpdate)
    {
        galleons = galleonsUpdate;
    }
    public void setHealth(double healthUpdate)
    {
        health = healthUpdate;
    }
    public void setSupplies(String suppliesUpdate)
    {
        supplies = suppliesUpdate;
    }
    // boolean promote, promotes a level up
    public boolean promote()
    {
        if (level == "apprentice")
        {
            level = "wizard";
            galleons +=100;
            return true;
        }
        else if (level == "wizard")
        {
            level = "mage";
            galleons +=100;
            return true;
        }
        else if (level == "mage")
        {
            level = "sorcerer";
            galleons +=100;
            return true;
        }
        else if (level == "sorcerer")
        {
            level = "shaman";
            galleons +=100;
            return true;
        }
        else if (level == "shaman")
        {
            return false;
        }
        return true;
    }
    public boolean downgradeLevel()
    {
        if (level == "shaman")
        {
            level = "sorcerer";
            return true;
        }
        else if (level == "sorcerer")
        {
            level = "mage";
            return true;
        }
        else if (level == "mage")
        {
            level = "wizard";
            return true;
        }
        else if (level == "wizard")
        {
            level = "apprentice";
            return true;
        }
        else if (level == "apprentice")
        {
            return false;
        }
        if(galleons>= 100)
        {
            galleons -=100;
        }
        else
        {
            galleons =0;
        }
        return true;
    }        
JD指南

试试这个:-

// boolean promote, promotes a level up
    public boolean promote()
    {
        if (level.equals("apprentice"))
        {
            level = "wizard";
            galleons +=100;
            return true;
        }
        else if (level.equals("wizard"))
        {
            level = "mage";
            galleons +=100;
            return true;
        }
        else if (level.equals("mage"))
        {
            level = "sorcerer";
            galleons +=100;
            return true;
        }
        else if (level.equals("sorcerer"))
        {
            level = "shaman";
            galleons +=100;
            return true;
        }
        else if (level.equals("shaman"))
        {
            return false;
        }
        return true;
    }

如果您需要从此访问变量,main()则需要将变量声明为静态。

public static void main(String str[]){
        Magician magg=new Magician("Harry#wizard#broom#staff");

        System.out.println("Level before promote is ::"+level);
        magg.promote();
        System.out.println("Level after promote is::"+level);
    }

输出 :-

Level before promote is ::wizard
Level after promote is::mage

现在正在工作。

希望对您有帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我的Stringbuilder的returnValue没有渗入我想额外发送的字符串中,为什么?

来自分类Dev

为什么我的 JTextArea 没有从我的字符串中添加换行符?

来自分类Dev

在Java中,我有一个名为字符串“ A”的字符串(大小为1)。为什么string.substring(1)没有给出异常

来自分类Dev

为什么我的函数没有从数组中删除所有字符串?javascript

来自分类Dev

为什么我的C mpi程序中没有字符串?

来自分类Dev

即使没有找到字符串,为什么它的错误级别为0?

来自分类Dev

为什么这没有在正确的位置添加正确的字符串?

来自分类Dev

我在java中反转给定字符串的每个单词的代码有什么问题?

来自分类Dev

我的字符串类的 += 运算符有问题,它没有正确连接字符串

来自分类Dev

尝试使用驼峰式大小写字符串,为什么我的字母没有更新为upperCase?

来自分类Dev

为什么字符串没有出现在WPML的“字符串翻译”中?

来自分类Dev

当我们在此函数中反转字符串时,为什么char * str的指针没有改变?

来自分类Dev

我有正确打印出字符串的问题

来自分类Dev

如何从Java中的字符串中分别提取字符串和整数?

来自分类Dev

如何从Java中的字符串中分别提取字符串和整数?

来自分类Dev

为什么str(reversed(...))没有给我反向字符串?

来自分类Dev

为什么我的字符串“ N / A”没有插入数据库?

来自分类Dev

为什么我的JavaScript程序没有将其转换为整数而不是字符串?

来自分类Dev

在检查“退出”字符串时,为什么我的代码没有在循环中终止?

来自分类Dev

为什么 JSON.stringify() 没有按预期对我的对象进行字符串化?

来自分类Dev

我所有的解码字符串为什么会有“?” 在末尾?Java的字符串解码

来自分类Dev

为什么我的字符串识别算法无法检测到正确的字符串?

来自分类Dev

为什么字符串来自 Kotlin 中的字符串资源文件时没有被替换?

来自分类Dev

我的字符串格式有什么问题?(即使参数中带有尾部逗号)

来自分类Dev

为什么数组没有字符串索引签名?

来自分类Dev

为什么查询字符串的 = 和 & 没有编码?

来自分类Dev

PHP 没有从变量中获取正确的字符串

来自分类Dev

字符串在 C 中没有正确打印

来自分类Dev

为什么在希伯来语字符串中搜索值时没有显示结果?

Related 相关文章

  1. 1

    我的Stringbuilder的returnValue没有渗入我想额外发送的字符串中,为什么?

  2. 2

    为什么我的 JTextArea 没有从我的字符串中添加换行符?

  3. 3

    在Java中,我有一个名为字符串“ A”的字符串(大小为1)。为什么string.substring(1)没有给出异常

  4. 4

    为什么我的函数没有从数组中删除所有字符串?javascript

  5. 5

    为什么我的C mpi程序中没有字符串?

  6. 6

    即使没有找到字符串,为什么它的错误级别为0?

  7. 7

    为什么这没有在正确的位置添加正确的字符串?

  8. 8

    我在java中反转给定字符串的每个单词的代码有什么问题?

  9. 9

    我的字符串类的 += 运算符有问题,它没有正确连接字符串

  10. 10

    尝试使用驼峰式大小写字符串,为什么我的字母没有更新为upperCase?

  11. 11

    为什么字符串没有出现在WPML的“字符串翻译”中?

  12. 12

    当我们在此函数中反转字符串时,为什么char * str的指针没有改变?

  13. 13

    我有正确打印出字符串的问题

  14. 14

    如何从Java中的字符串中分别提取字符串和整数?

  15. 15

    如何从Java中的字符串中分别提取字符串和整数?

  16. 16

    为什么str(reversed(...))没有给我反向字符串?

  17. 17

    为什么我的字符串“ N / A”没有插入数据库?

  18. 18

    为什么我的JavaScript程序没有将其转换为整数而不是字符串?

  19. 19

    在检查“退出”字符串时,为什么我的代码没有在循环中终止?

  20. 20

    为什么 JSON.stringify() 没有按预期对我的对象进行字符串化?

  21. 21

    我所有的解码字符串为什么会有“?” 在末尾?Java的字符串解码

  22. 22

    为什么我的字符串识别算法无法检测到正确的字符串?

  23. 23

    为什么字符串来自 Kotlin 中的字符串资源文件时没有被替换?

  24. 24

    我的字符串格式有什么问题?(即使参数中带有尾部逗号)

  25. 25

    为什么数组没有字符串索引签名?

  26. 26

    为什么查询字符串的 = 和 & 没有编码?

  27. 27

    PHP 没有从变量中获取正确的字符串

  28. 28

    字符串在 C 中没有正确打印

  29. 29

    为什么在希伯来语字符串中搜索值时没有显示结果?

热门标签

归档