Java 方法和数组

Java 方法和数组,java,arrays,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 st

这是我的密码:

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)));
        }
    }
}
我的问题是:

我有4个错误,比如:error:expected。它是连通的 使用数组,但我不知道出了什么问题

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

为什么呢

在引用阵列时为阵列创建新的内存地址。喜欢

静态双精度[]价格=新双精度[ile]

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

printInvoiceProduct方法声明为向其传递4个参数,但您仅通过一个String对象调用了它


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

除此之外,我认为这不是解决此类问题的正确平台。考虑你的问题在


好的开始是正确格式化代码…显示错误将非常好。ile没有价值,因此数组创建将失败。但我们可以有更多的机会this@MightyPork格式设置完成。需要了解您想要的内容。谢谢帮助。如何使ile静态?类似这样的东西:price=newstaticdouble[ile]?我得不到第三分。你所说的一个斯特林物体是什么意思?哪一个?对不起,我不是个傻瓜。我没有粘贴完整的代码,但我有类似的东西:System.out.printlenternumber of products;Scanner Scanner=新ScannerSystem.in;ile=scanner.nextInt;所有这些都会使数组变大,但这不会有帮助,因为在创建数组时,会计算值ile,而您在类级别执行此操作。