方法和数组

时间:2013-11-09 13:25:44

标签: java arrays

这是我的代码:

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个用户输入的产品,但没有显示任何内容。

  3. 为什么?

2 个答案:

答案 0 :(得分:0)

  1. 在引用数组时为数组创建新的内存地址。等;

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

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

  3. 声明
  4. printInvoiceProduct方法将4个参数传递给它,但你只用一个String对象调用它。

答案 1 :(得分:0)

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

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

  

https://codereview.stackexchange.com/