Java 如何减少此代码的冗余?

Java 如何减少此代码的冗余?,java,Java,我不允许使用超过三个打印语句。我尝试创建私有方法,但没有成功 public static void main(String[] args) { Scanner console = new Scanner(System.in); int numBills1 = spending(console, "John"); int numBills2 = spending(console, "Jane"); System.out.println("John needs " +

我不允许使用超过三个打印语句。我尝试创建私有方法,但没有成功

public static void main(String[] args) {
    Scanner console = new Scanner(System.in);
    int numBills1 = spending(console, "John");
    int numBills2 = spending(console, "Jane");
    System.out.println("John needs " + numBills1 + " bills");
    System.out.println("Jane needs " + numBills2 + " bills");
}

public static int spending(Scanner console, String name) {
    System.out.print("How much will " + name + " be spending? ");
    double amount = console.nextDouble();
    System.out.println();
    int numBills = (int) (amount / 20.0);
    if (numBills * 20.0 < amount) {
        numBills++;
    }
    return numBills;
}
publicstaticvoidmain(字符串[]args){
扫描仪控制台=新扫描仪(System.in);
int numBills1=支出(控制台,“约翰”);
int numBills2=消费(控制台,“简”);
System.out.println(“约翰需要”+numBills1+bills”);
System.out.println(“Jane需要”+numBills2+“账单”);
}
公共静态整数开销(扫描仪控制台,字符串名称){
System.out.print(“将花费多少“+name+”);
双倍金额=console.nextDouble();
System.out.println();
int numBills=(int)(金额/20.0);
如果(麻木*20.0<金额){
麻木病++;
}
回归麻木;
}

使用新行如何
\n

System.out.println("John needs " + numBills1 + " bills\nJane needs " + numBills2 + " bills");
你也不是真的需要空打印。除去

System.out.println();

您有两个解决方案,如果需要,您可以使用两个,您可以使用
\n
连接字符串:

public static void main(String[] args) {
    //...
    System.out.println("John needs " + numBills1 + " bills" + "\n" + "Jane needs " + numBills2 + " bills");
    //---------------------------------------------------------^^^----------
}
在您的方法中,您可以将
print
更改为
println

public static int spending(Scanner console, String name) {
    System.out.println("How much will " + name + " be spending? ");
    //--------------^^---------------------------------------------
并删除:

System.out.println();

正如前面提到的,您可以连接两个字符串,并在methode a
System.out.println(“此处的文本”)上进行打印

此外,您不需要将scanner作为methode的参数,只需在main methode之前键入:

static Scanner output = new Scanner (System.in);
通过这种方式,您可以在整个程序中使用扫描仪,如下所示:

public static int spending(String name) 
{
        System.out.println("How much will " + name + " be spending? ");
        double amount = output.nextDouble();  

        int numBills = (int) (amount / 20.0);
        if (numBills * 20.0 < amount)
        {
            numBills++;
        }
        return numBills;
}
公共静态整数开销(字符串名称)
{
System.out.println(“将花费多少“+name+”);
double amount=output.nextDouble();
int numBills=(int)(金额/20.0);
如果(麻木*20.0<金额)
{
麻木病++;
}
回归麻木;
}

类似这样的东西

  public static void main(String[] args) {
    while (true) {
        Scanner console = new Scanner(System.in);
        System.out.print("The name : ");
        String name = console.nextLine();
        System.out.print("How much will " + name + " be spending? ");
        double amount = console.nextDouble();
        System.out.println(name + " needs " + calculateBills(amount) + " bills");
    }
}

private static int calculateBills(double amount) {
    int numBills = (int) (amount / 20.0);
    if (numBills * 20.0 < amount) {
        numBills++;
    }
    return numBills;
}
publicstaticvoidmain(字符串[]args){
while(true){
扫描仪控制台=新扫描仪(System.in);
系统输出打印(“名称:”);
字符串名称=console.nextLine();
System.out.print(“将花费多少“+name+”);
双倍金额=console.nextDouble();
System.out.println(名称+“需要”+计算提单(金额)+“账单”);
}
}
专用静态整数计算器(双倍金额){
int numBills=(int)(金额/20.0);
如果(麻木*20.0<金额){
麻木病++;
}
回归麻木;
}

您似乎想进行汇总。一种方法是

int numBills = (int) Math.ceil(amount / 20);

您可以尝试将输出文本存储在实例变量中,然后对所有输出使用一个print语句

private static String output="";
public static void main(String[] args) {
    Scanner console = new Scanner(System.in);
    spending(console, "John");
    spending(console, "Jane");
    System.out.println(output);
}
public static void spending(Scanner console, String name) {
    System.out.print("How much will " + name + " be spending? ");
    double amount = Double.parseDouble(console.nextLine());
    int numBills = (int) (amount / 20.0);
    if (numBills * 20.0 < amount) {
        numBills++;
    }
    output += name + " needs "+numBills+" bills\n";
}
私有静态字符串输出=”;
公共静态void main(字符串[]args){
扫描仪控制台=新扫描仪(System.in);
支出(控制台,“约翰”);
支出(控制台,“简”);
系统输出打印项次(输出);
}
公共静态无效支出(扫描仪控制台,字符串名称){
System.out.print(“将花费多少“+name+”);
double amount=double.parseDouble(console.nextLine());
int numBills=(int)(金额/20.0);
如果(麻木*20.0<金额){
麻木病++;
}
输出+=名称+“需要”+麻药+“账单\n”;
}

Use\n new line如果此代码正常工作,您应该询问一个问题。我投票将此问题作为离题问题结束,因为它属于欢迎使用堆栈溢出!请带上,四处看看,并通读,尤其是和。请添加一个描述,说明代码在哪些方面没有达到您的期望。私有方法在哪些方面没有奏效??