十进制格式导致 'void type not allowed here' 错误

Decimal Format Causes 'void type not allowed here' error

在我的 toString 方法中,我所有的变量都打印正常,我的所有代码都没有问题。

我需要编辑以更改小数格式,这样我的数字就不会打印 1E9 或其他任何内容(更长的浮点数),它实际上会打印非科学记数法版本 (123,456,789.00)。

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

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

为什么我的 decimalformat 会影响其他变量?

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() 输出类型是 void

你可以使用 decimalFormat.format( value ) 方法,它的输出是字符串 所以你可以在你的 toString 方法中毫无问题地使用它。