-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
  1. 配列を参照するときに、配列の新しいメモリ アドレスを作成します。お気に入り;

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

  2. これらの静的配列は非静的変数「ile」への静的参照を作成しようとするため、これも十分ではありません。したがって、配列を静的にしたい場合は、「ile」も静的にします。

  3. printInvoiceProductメソッドは 4 つの引数を渡すように宣言されていますが、1 つの String オブジェクトによってのみ呼び出されています。

于 2013-11-09T13:51:16.930 に答える