Принимается как строка, несмотря на то, что вводится как целое число через nextInt () - PullRequest
0 голосов
/ 06 февраля 2020
import java.lang.String;
import java.lang.System;

import java.text.DecimalFormat;

import java.io.IOException;

import java.util.Scanner;

public class StorePrice
{
    public static void main (String args[]) throws IOException
    {
        int taxRate, markupRate, price;
        Scanner prompt = new Scanner(System.in);
        DecimalFormat decimal = new DecimalFormat("#,##0.00");

        System.out.print("Input the original price: ");
        price = prompt.nextInt();
        System.out.print("Input the markup rate: ");
        markupRate = prompt.nextInt();
        System.out.print("Input the tax rate: ");
        taxRate = prompt.nextInt();

        markupRate = decimal.format(markupRate);
        taxRate = decimal.format(taxRate);

        System.out.print("Original price: " + price + "\n");
        System.out.print("Markup rate: " + markupRate + "\n");
        System.out.print("Selling price: " + (price + (price*markupRate)) + "\n");
        System.out.print("Tax rate: " + taxRate + "\n");
        System.out.print("Tax: " + (price*taxRate) + "\n");
        System.out.print("Final price: " + ((price*markupRate) + (price*taxRate)) + "\n");
    }
}

Здравствуйте, я новичок в OOP и Java, и у меня возникли проблемы с введенными типами данных через nextInt () ;. Ошибка выглядит следующим образом:

C:\Stuffs\Codes\Java\StorePrice.java:25: error: incompatible types
        markupRate = decimal.format(markupRate);
                                   ^
  required: int
  found:    String
C:\Stuffs\Codes\Java\StorePrice.java:26: error: incompatible types
        taxRate = decimal.format(taxRate);
                                ^
  required: int
  found:    String
2 errors

Почему это все еще строка, несмотря на то, что она вводится как целое число? Где здесь проблема l ie здесь?

РЕДАКТИРОВАТЬ: я забыл добавить, что мне строго предписано объявить price, markupRate и taxRate как целые числа в коде.

1 Ответ

1 голос
/ 06 февраля 2020

Вы должны знать о типе возврата методов, которые вы вызываете при передаче его переменной (если он не создан вами, вы можете найти его в документации). В этом случае вы пытаетесь присвоить INT markupRate и налоговую ставку переменной String, возвращаемой из decimal.format (int). Итак, что вам нужно сделать, это просто создать некоторые строковые переменные для хранения возвращаемой строки, но вам все еще нужны целые числа как параметры для форматирования. попробуйте это:

    public static void main (String args[]) throws IOException
    {
       int  taxRate, markupRate, price;
        String sMarkupRate, sTaxRate;
        String sSellingPrice, sTax, sFinalPrice;
        Scanner prompt = new Scanner(System.in);
        DecimalFormat decimal = new DecimalFormat("#,##0.00");

        System.out.print("Input the original price: ");
        price = prompt.nextInt();
        System.out.print("Input the markup rate: ");
        markupRate = prompt.nextInt();
        System.out.print("Input the tax rate: ");
        taxRate = prompt.nextInt();

        sMarkupRate = decimal.format(markupRate);
        sTaxRate = decimal.format(taxRate);
        sSellingPrice = decimal.format(price + (price*markupRate));
        sTax = decimal.format((price*taxRate));
        sFinalPrice = decimal.format((price*markupRate) + (price*taxRate));


        System.out.print("Original price: " + price + "\n");
        System.out.print("Markup rate: " + sMarkupRate  + "\n");
        System.out.print("Selling price: " + sSellingPrice + "\n");
        System.out.print("Tax rate: " + sTaxRate + "\n");
        System.out.print("Tax: " + sTax + "\n");
        System.out.print("Final price: " + sFinalPrice + "\n");
    }
}
...