【问题标题】:Java - bad operand types for binary operator '-'Java - 二元运算符'-'的错误操作数类型
【发布时间】:2017-04-27 23:26:16
【问题描述】:

我遇到以下问题;

我定义sumwdouble,当我编译它给我以下错误:

C:\Users\Seth Wong\Desktop\cse110 project1\src\Assignment8.java:63: error: bad operand types for binary operator '-'
System.out.println("Ending balance:      $ "+b+sumd-sumw+sumi); //check here
                                                       ^
  first type:  String
  second type: double
1 error

代码:

import java.io.*;

public class Assignment8
 {
public static void main(String[] args)
    {try {
    //create an InputStreamReader obj first
    InputStreamReader ir = new InputStreamReader(System.in);

    //create a BufferedReader obj
    BufferedReader br = new BufferedReader(ir);

    //variales
    double b,a,d,w, interest;
    int count =0;
    double sumd =0.00;
    double sumw =0.00;
    double sumi =0.00; 

    //#1: prime read

    System.out.print("\nEnter the starting balance on the account: $");
    b = Double.parseDouble(br.readLine());

    System.out.print("\nEnter the annual interest rate on the account (e.g. .04): ");
    a = Double.parseDouble(br.readLine());

    for(int i=1; i<4; i++)
    {
        count++;


        //#3 read in the next data
        System.out.print("\nMonth"+i);
        System.out.print("\nTotal deposits for this month: $");
            d = Double.parseDouble(br.readLine());
            sumd += d;
        System.out.print("Total withdrawals for this month: $");
            w = Double.parseDouble(br.readLine());
            sumw += w;
            interest = (b+d)*a/12;
            sumi +=(b+d+interest)*a/12;
    }

    //avg = sum/count;
    System.out.println("\nQuarterly Savings Account Statement");
    System.out.println("\nStarting balance:    $ "+b);
    System.out.println("Total deposits:    + $ "+sumd);
    System.out.println("Total withdrawals: - $ "+sumw);
    System.out.println("Total interest:    + $   "+sumi);
    System.out.println(" ----------- ");
    System.out.println("Ending balance:      $ "+b+sumd-sumw+sumi); //check here sumw causes problem 


    }
    catch (IOException e)
    {
    System.out.println(e);
    }
    catch (ArithmeticException e)
    {
        System.out.println("Wrong, restart!");
    }
    }
}

【问题讨论】:

  • System.out.println 正在尝试将每个单独的语句评估为 String,并且您不能“减去”两个 Strings,请尝试将其括在括号中 - (b+sumd-sumw+sumi) 以允许它首先评估整个语句,然后将其转换为 String
  • 假设这条线导致了问题。 + b + sumd - sumw + sumi。先计算然后打印出来。
  • 非常感谢。问题解决了。

标签: java bufferedreader


【解决方案1】:

在将结果与String 连接之前添加几个括号应该可以解决问题。

System.out.println("Ending balance:      $ "+(b+sumd-sumw+sumi));

【讨论】:

    猜你喜欢
    • 2014-05-30
    • 2022-07-01
    • 2018-10-02
    • 1970-01-01
    • 1970-01-01
    • 2016-06-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多