Java 在printf行上找不到符号

Java 在printf行上找不到符号,java,Java,对这个错误做了一些研究,大多数看起来都很简单。我检查了一下是否有拼写错误,但没有发现任何错误。我试着用printf打印几行。当我去编译这段代码时,它会给我一个“找不到符号错误”。这些行所需要的方法可能是定义变量的方法吗?这个错误只在我的printSales方法中出现。这不是成品,所以我可能会缺一两块。但这是我的代码,任何帮助都将不胜感激 import java.util.Scanner; public class Sales { public static void main( St

对这个错误做了一些研究,大多数看起来都很简单。我检查了一下是否有拼写错误,但没有发现任何错误。我试着用printf打印几行。当我去编译这段代码时,它会给我一个“找不到符号错误”。这些行所需要的方法可能是定义变量的方法吗?这个错误只在我的printSales方法中出现。这不是成品,所以我可能会缺一两块。但这是我的代码,任何帮助都将不胜感激

import java.util.Scanner;

public class Sales
{

    public static void main( String[] args)
    {
    Scanner input = new Scanner (System.in);
    System.out.print("Please enter a product number.");
    double product1 = 0;
    double product2 = 0;
    double product3 = 0;
    double product4 = 0;
    double product5 = 0;
    double sale;

    int userInput = input.nextInt();
        while(userInput != 0)
        {   
           if(userInput >= 1 && userInput <= 5)
           {
            switch(userInput)
            {
                case 1:  System.out.println("");
                        product1 ++;
                        sale += 2.98;
                         break;

            System.out.print("How many were sold?");             
            userInput = input.nextInt();

                case 2:  System.out.println("");
                        product2 ++;
                        sale += 4.50;
                         break;

            System.out.print("How many were sold?");
            userInput = input.nextInt();

                case 3: System.out.println("");
                        product3 ++;
                        sale += 9.98;
                         break;

            System.out.print("How many were sold?");
            userInput = input.nextInt();

                case 4: System.out.println("");
                        product4 ++;
                        sale += 4.49;
                         break;

            System.out.print("How many were sold?");
            userInput = input.nextInt();

                case 5:System.out.println("");
                        product5 ++;
                        sale += 6.87;
                         break;
            System.out.print("How many were sold?");
            userInput = input.nextInt();

            }//end switch
            } //end if
        else if (userInput != 0)
            bSystem.out.println("ERROR: Incorrect Product Number, Please Try Again");
            System.out.print("");
            userInput = input.nextInt();
        }//end while 
    } //end main
    public void printSales()
    {
    System.out.println();
    System.out.printf("Product 1: $%.2f\n", product1);
    System.out.printf("Product 2: $%.2f\n", product2);
    System.out.printf("Product 3: $%.2f\n", product3);
    System.out.printf("Product 4: $%.2f\n", product4);
    System.out.printf("Product 5: $%.2f\n", product5);
    } //end printSales
} //end class 
import java.util.Scanner;
公务舱销售
{
公共静态void main(字符串[]args)
{
扫描仪输入=新扫描仪(System.in);
系统输出打印(“请输入产品编号”);
双乘积1=0;
双乘积2=0;
双乘积3=0;
双乘积4=0;
双乘积5=0;
双重销售;
int userInput=input.nextInt();
while(userInput!=0)
{   

如果(userInput>=1&&userInput这是变量范围的问题。您不能在另一个方法中引用一个方法中的变量。请尝试重新定义printSales:

public void printSales(int product1, int product2, int product3, int product4, int product5)
{
    System.out.println();
    System.out.printf("Product 1: $%.2f\n", product1);
    System.out.printf("Product 2: $%.2f\n", product2);
    System.out.printf("Product 3: $%.2f\n", product3);
    System.out.printf("Product 4: $%.2f\n", product4);
    System.out.printf("Product 5: $%.2f\n", product5);
} //end printSales
当然,你必须改变你对printSales的称呼(我知道你现在不打电话,但也许你将来会这么称呼它):


确保product1、product2等都在同一个“作用域”中--您不能进入另一个方法,也不能进入if{}或for{}或while{}块来引用变量。

这是变量作用域的问题。您不能在另一个方法中引用一个方法中的变量。请尝试重新定义printSales:

public void printSales(int product1, int product2, int product3, int product4, int product5)
{
    System.out.println();
    System.out.printf("Product 1: $%.2f\n", product1);
    System.out.printf("Product 2: $%.2f\n", product2);
    System.out.printf("Product 3: $%.2f\n", product3);
    System.out.printf("Product 4: $%.2f\n", product4);
    System.out.printf("Product 5: $%.2f\n", product5);
} //end printSales
当然,你必须改变你对printSales的称呼(我知道你现在不打电话,但也许你将来会这么称呼它):


确保product1、product2等都在同一个“作用域”中--您不能进入另一个方法,也不能进入if{}或for{}或while{}块来引用变量。

这是变量作用域的问题。您不能在另一个方法中引用一个方法中的变量。请尝试重新定义printSales:

public void printSales(int product1, int product2, int product3, int product4, int product5)
{
    System.out.println();
    System.out.printf("Product 1: $%.2f\n", product1);
    System.out.printf("Product 2: $%.2f\n", product2);
    System.out.printf("Product 3: $%.2f\n", product3);
    System.out.printf("Product 4: $%.2f\n", product4);
    System.out.printf("Product 5: $%.2f\n", product5);
} //end printSales
当然,你必须改变你对printSales的称呼(我知道你现在不打电话,但也许你将来会这么称呼它):


确保product1、product2等都在同一个“作用域”中--您不能进入另一个方法,也不能进入if{}或for{}或while{}块来引用变量。

这是变量作用域的问题。您不能在另一个方法中引用一个方法中的变量。请尝试重新定义printSales:

public void printSales(int product1, int product2, int product3, int product4, int product5)
{
    System.out.println();
    System.out.printf("Product 1: $%.2f\n", product1);
    System.out.printf("Product 2: $%.2f\n", product2);
    System.out.printf("Product 3: $%.2f\n", product3);
    System.out.printf("Product 4: $%.2f\n", product4);
    System.out.printf("Product 5: $%.2f\n", product5);
} //end printSales
当然,你必须改变你对printSales的称呼(我知道你现在不打电话,但也许你将来会这么称呼它):

确保product1、product2等都在同一个“作用域”中--您不能进入另一个方法,也不能进入if{}或for{}或while{}块来引用变量。

有四个问题

1.
销售可能未初始化

您将
sale
变量声明为

double sale;
作为局部变量,它没有默认值,因此执行类似于
sale+=2.98
的操作会产生未定义的结果

简单地将变量初始化为默认值/起始值

double sale = 0d;
2. 包B系统不存在
B系统.out.println(“错误:产品编号不正确,请重试”)

输入错误,应该是
System.out.println
;)

3. 错误:找不到符号 System.out.printf(“产品1:$%.2f\n”,产品1)

product1
product2
product3
product4
product5
printSales
中没有意义,因为它们仅在
main
中声明为局部变量

通常情况下,我建议创建这些实例变量,但由于您在
main
static
上下文中运行,这将不起作用。相反,请修改
printSales
方法以获取参数

public void printSales(double product1, double product2, double product3, double product4, double product5) {
    ...
}
4. 您应该会收到许多关于“无法访问语句
”的警告,这是由于您
switch`语句中断开,但试图在它之后执行代码

case 1:
    System.out.println("");
    product1++;
    sale += 2.98;
    break;

    System.out.print("How many were sold?");
    userInput = input.nextInt();
    ^--- These can't be executed, because of the break before it...
相反,请尝试在
break
语句之前移动代码

case 1:
    System.out.println("");
    product1++;
    sale += 2.98;

    System.out.print("How many were sold?");
    userInput = input.nextInt();
    break;
您可能想看一看,并了解更多详细信息

四个问题

1.
销售可能未初始化

您将
sale
变量声明为

double sale;
作为局部变量,它没有默认值,因此执行类似于
sale+=2.98
的操作会产生未定义的结果

简单地将变量初始化为默认值/起始值

double sale = 0d;
2. 包B系统不存在
B系统.out.println(“错误:产品编号不正确,请重试”)

输入错误,应该是
System.out.println
;)

3. 错误:找不到符号 System.out.printf(“产品1:$%.2f\n”,产品1)

product1
product2
product3
product4
product5
printSales
中没有意义,因为它们仅在
main
中声明为局部变量

通常情况下,我建议创建这些实例变量,但由于您在
main
static
上下文中运行,这将不起作用。相反,请修改
printSales
方法以获取参数

public void printSales(double product1, double product2, double product3, double product4, double product5) {
    ...
}
4. 您应该会收到许多关于“无法访问语句
”的警告,这是由于您
switch`语句中断开,但试图在它之后执行代码

case 1:
    System.out.println("");
    product1++;
    sale += 2.98;
    break;

    System.out.print("How many were sold?");
    userInput = input.nextInt();
    ^--- These can't be executed, because of the break before it...
相反,请尝试在
break
语句之前移动代码

case 1:
    System.out.println("");
    product1++;
    sale += 2.98;

    System.out.print("How many were sold?");
    userInput = input.nextInt();
    break;
您可能想看一看,并了解更多详细信息

四个问题

1.
销售可能未初始化

你申报