-3

这是我的代码:

import java.util.*;
import java.text.*;


public class zadanko4
{
    int ile;

    public static final int vat8 = 8;
    public static final int vat23 = 23;
    public static final int vat5 = 5;

    //deklaracje zmiennych tablicowych
    static double[] price;
    static String[] name;
    static int[] quantity;
    static int[] vat;

    //tworzenie tablic
    price = new double[ile];
    name = new String[ile];
    quantity = new int[ile];
    vat = new int[ile];

    public static void printSellerData(String tekst)
    {
        System.out.print(tekst);
    }

    public static void printBuyerData(String company, String taxNo, String phone, String email)
    {
        System.out.print(company + taxNo + phone + email);
    }

    public static void printInvoiceDate(Date data)
    {

        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        System.out.print(dateFormat.format(data));
    }

    public static void printInvoiceHeader(String naglowek)
    {
        System.out.print(naglowek);
    }

    public static void printInvoiceProduct(String name, int quantity, double price, int vat)
    {
        System.out.printf(name + quantity + price + vat);
    }

    public static void readProductsData()
    {
        //uzytkownik wprowadza liczbe produktow
        System.out.println("podaj liczbe produktow");
        Scanner scanner = new Scanner(System. in );
        ile = scanner.nextInt();
    }

    public static void main(String[] args)
    {
        int i;
        String line;

        for (i = 0; i < ile; i++)
        {
            System.out.print("Podaj cene produktu nr " + (i + 1) + ": ");
            price[i] = scanner.nextDouble();
            System.out.print("Podaj nazwe produktu nr " + (i + 1) + ": ");
            name[i] = scanner.next();
            System.out.print("Podaj ilosc produktu nr " + (i + 1) + ": ");
            quantity[i] = scanner.nextInt();
            System.out.print("Podaj vat produktu nr " + (i + 1) + ": ");
            vat[i] = scanner.nextInt();


            System.out.printf("Dane sprzedajacego\n");
            printSellerData("Company: MaxDom Ltd, Kochanowskiego 17, 31-782 Krakow, Poland\n");
            printSellerData("Tax no: 677-000-21-39\n");
            printSellerData("Phone: +48123454943\n");
            printSellerData("Email: office@maxdom.pl\n\n");

            System.out.printf("Dane kupujacego\n");
            printBuyerData("Softpol Ltd, Mickiewicza 5, 31-009 Krakow, Poland\n", "342-909-33-12\n", "+48505392100\n", "office@softpol.eu\n");
            //  printInvoiceNumber(+numer+);
            Date data = new Date();
            printInvoiceDate(data);
            printInvoiceHeader("|No.|Product desciptrion    |Quantity   |Unit price |Total  |VAT rate   |VAT    |Gross|");
            printInvoiceHeader("|______________________________________________________________________________________________________|");
            //printInvoiceProduct("name[i]", ilosc[prod], cena[prod], vat[prod]");
            printInvoiceProduct("|" + (i + 1) + "   |" + name[i] + "            |" + quantity[i] + "        |" + price[i] + "       |" + (quantity[i] * price[i]) + "   |" + (vat[i] / 100.0) + "           |" + (quantity[i] * price[i] * (vat[i] / 100.0)) + "    |" + (quantity[i] * price[i]) * (1 + (vat[i] / 100.0)));
        }
    }
}

和我的问题:

  1. 我有 4 个错误,例如: error: <identifier> expected. 它与数组相连,但我不知道出了什么问题。

  2. 最后一行: printInvoiceProduct.... 我想显示用户输入的 1 个产品,但没有显示任何内容。

这是为什么?

4

2 回答 2

0

即使你解决了编译错误,你也会再次面临问题。例如,您正在创建一个大小为零的数组,这将失败。因此,不要在上面创建数组对象;知道数组大小后在主函数中创建。所以摆脱 ile 变量。在 main 中获取输入,然后实例化所有数组。即使我看不到需要类级别的数组,都可以是本地方法。

最重要的是,我认为这不是解决此类问题的正确平台。考虑把你的问题放在

https://codereview.stackexchange.com/

于 2013-11-09T15:20:22.743 回答
0
  1. 在引用数组时为它们创建新的内存地址。喜欢;

    static double[] price = new double[ile];

  2. 这也是不够的,因为这些静态数组试图对非静态变量“ile”进行静态引用。因此,如果您希望您的数组是静态的,只需将“ile”也设为静态即可。

  3. printInvoiceProduct方法被声明为向它传递 4 个参数,但您只通过一个 String 对象调用了它。

于 2013-11-09T13:51:16.930 回答