在我的toString方法中,我所有的变量都可以正常打印,并且我的所有代码都可以正常工作。

我需要进行编辑以更改十进制格式,以便代替打印1E9或任何数字(更长的浮点数)的数字,它实际上会打印非科学符号版本(123,456,789.00)。

因此,在我的toString方法中,我初始化了DecimalFormat对象,并将其实现为我的值。

在我没有出现关于“此处不允许的'void'类型”的错误之前,但是在实现了十进制格式之后,现在我尝试打印的所有其他3个变量都给了我错误。

为什么十进制格式会影响其他变量?

import java.text.DecimalFormat;

public class Project {
  String projName;        //Name of a project
  int projNumber;      //Number of a project
  String projLocation;    //Location of a project
  Budget projBudget;      //Budget of a project

public Project(double amount) {
  this.projName = "?";
  this.projNumber = 0;
  this.projLocation = "?";
  Budget thisBudget = new Budget(amount);
  this.projBudget = thisBudget;
}

public String getName(){
  return projName;
}

public int getNumber() {
  return projNumber;
}

public String getLocation() {
  return projLocation;
}

public Budget getBudget() {
  return projBudget;
}

public void setName(String aName) {
  projName = aName;
}

public void setNumber(int aNumber) {
  projNumber = aNumber;
}

public void setLocation(String aLocation) {
  projLocation = aLocation;
}

public boolean addExpenditure(double amount) {
  return projBudget.addSpending(amount);
}

public String toString() {
  String format = "###,###.##";
  DecimalFormat decimalFormat = new DecimalFormat(format);
  return "\nProject Name:\t\t" + getName() + "\nProject Number:\t\t" + getNumber() + "\nProject Location:\t\t" + getLocation() + "\nBudget:\nInitial Funding\t$" + decimalFormat.applyPattern(String.valueOf(projBudget.initialFunding)) + "\nSpending\t\t$" + decimalFormat.applyPattern(String.valueOf(projBudget.spending)) + "\nCurrent Balance\t$" + decimalFormat.applyPattern(String.valueOf(projBudget.currentBalance)) +"\n\n";
}
}

最佳答案

因为decimalFormat.applyPattern()输出类型无效

您可以使用decimalFormat.format( value )方法,它的输出是String
因此您可以在toString方法中使用它,而不会遇到任何麻烦。

关于java - 十进制格式导致“此处不允许使用空类型”错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34936738/

10-10 22:47