方法需要从用户返回字符串。只需要排除故障
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变量,你应该改写你的答案。以上是关于方法需要从用户返回字符串。只需要排除故障的主要内容,如果未能解决你的问题,请参考以下文章