方法需要从用户返回字符串。只需要排除故障

Posted

技术标签:

【中文标题】方法需要从用户返回字符串。只需要排除故障【英文标题】:Methods need to return string from user.Need troubleshoot only 【发布时间】:2014-08-17 06:09:21 【问题描述】:

我是 Java 编程的初学者,我尽我所能,但似乎无法解决我的问题。

我面临的问题是 getCardID() 方法不断返回 null 值,getTokenBalance() 似乎工作正常,还是我需要特殊代码才能从 getCardID() 返回字符串值?

非常感谢任何帮助。

这是Prepaidcard.java类:

class PrepaidCard 
    private String cardID;
    private int tokenBalance;

    public PrepaidCard(String id)  // My First Constructor
        String cardID = id ;
    

    public PrepaidCard(String id, int token)  // My Second Constructor
        String cardID = id;
        tokenBalance = token;
    

    public void addToken(int token)  // Methods
        tokenBalance =token+tokenBalance;
    

    public void deductToken(int token)  // Methods
        tokenBalance=tokenBalance-token;
    

    public int getTokenBalance()  // Methods
        return tokenBalance;
    

    public String getCardID()  // Why does this method keep returning null value?
        return cardID;
    

这是用于测试prepaidcard.java的类

import java.util.*;

class testprepaid 
    public static void main(String [] args) 
        Scanner sc = new Scanner(System.in);

        System.out.print("Insert card1 id : "); 
        String newid = sc.nextLine(); // my scanner class that read user input in String

        System.out.print("Insert card2 id : "); 
        String newid2 = sc.nextLine(); // my scanner class that read user input in String

        System.out.print("Enter Card2 initial token : ");
        int itoken = sc.nextInt();

        PrepaidCard card1 = new PrepaidCard(newid);   // object created base on 1st & 2nd Constructor
        PrepaidCard card2 = new PrepaidCard(newid2,itoken);

        System.out.println("Card1 ID: " + card1.getCardID());     // the method return null when called
        System.out.println("Card1 token balance : " + card1.getTokenBalance());
        System.out.println("Card2 ID: " + card2.getCardID());          // and this
        System.out.println("Card2 token balance : " + card2.getTokenBalance());

其他行没有错误,所以我没有添加它们。

你可以看到我的运行时错误here。

【问题讨论】:

这个问题写得很好。贴出相关代码,问题描述通俗易懂。做得好。 +1 【参考方案1】:

在你的构造函数中,你声明了一个新的局部变量:

public PrepaidCard(String id, int token) // My Second Constructor

    String cardID = id; //This should be cardID = id;
    tokenBalance = token;

根据您的 IDE,您可以启用警告,告诉您未初始化的私有成员。

【讨论】:

【参考方案2】:
String cardID = id ; 

应该是一个实例变量。

所以删除 String cardID 的本地声明 -

public PrepaidCard(String id) //My First Constructor
 cardID = id ;

【讨论】:

类变量意味着static变量,你应该改写你的答案。

以上是关于方法需要从用户返回字符串。只需要排除故障的主要内容,如果未能解决你的问题,请参考以下文章

Linux服务器的故障排除方法

JSONException 故障排除:在字符 0 Android 处输入结束

Windows 7 用户文件夹迁移故障排除一例

不是组表达式:对 Oracle 查询进行故障排除

Spark 之 故障排除

Spark 之 故障排除