Java:一个参数的构造函数;错误-找不到符号-变量

Java:一个参数的构造函数;错误-找不到符号-变量,java,constructor,runtime-error,Java,Constructor,Runtime Error,我学的是Java编程(这是我在大学的第一年)。我有一个评估,我需要创建3个类。在其中一个类中,我需要一个带有字符串类型参数的构造函数。它需要允许我创建一个新的对象(薯片包),我应该在其中陈述它的味道 每当我尝试创建对象时,我都会得到一个文本框,在这里我可以输入薯片的味道,但当我按下ok时,我会得到一个错误(例如)找不到符号-变量bbq 我之前有一个类似的例子,它采用int类型,效果很好 当我将我的代码与其他工作示例进行比较时,我真的找不到我做错了什么 如果有人能提供建议,我将不胜感激 publi

我学的是Java编程(这是我在大学的第一年)。我有一个评估,我需要创建3个类。在其中一个类中,我需要一个带有字符串类型参数的构造函数。它需要允许我创建一个新的对象(薯片包),我应该在其中陈述它的味道

每当我尝试创建对象时,我都会得到一个文本框,在这里我可以输入薯片的味道,但当我按下ok时,我会得到一个错误(例如)找不到符号-变量bbq

我之前有一个类似的例子,它采用int类型,效果很好

当我将我的代码与其他工作示例进行比较时,我真的找不到我做错了什么

如果有人能提供建议,我将不胜感激

public class PackOfCrisps
{
private String flavour;
private int numOfCrisps;
private boolean open;

/**
 * Constructor for a single pack of crisps.
 */
public PackOfCrisps(String newFlavour)
{
    flavour = newFlavour;
    numOfCrisps = 10;
    open = true;
}

/**
 * Return whether the packet is empty.
 */
public boolean isEmpty() 
{
    if (numOfCrisps == 0) 
    {
        return true;
    } else
        return false;
}

/**
 * Return whether the packet is closed.
 */
public boolean isClosed() 
{
    return open;
}

/**
 * Change the boolean value of 'open' variable.
 */
public void open()
{
    open = !open;
}

/**
 * Return the flavour of the packet of crisps.
 */
public String getFlavour()
{
    return flavour;
}

/**
 * Decrease the number of crisps by 1 until the packet is empty.
 */
public void eatCrisps()
{
    if (open) 
    {
        System.out.println("Need to open the packet first!");
    } else if ((numOfCrisps > 1) && (numOfCrisps <= 10)){
        numOfCrisps = numOfCrisps - 1;

        System.out.println(numOfCrisps);
    } else {
        System.out.println("The packet is empty!");
    }
}
公共类包装
{
私人串味;
私人薯片;
私有布尔开放;
/**
*一包薯片的构造器。
*/
公共包装薯片(新口味)
{
风味=新风味;
numOfCrisps=10;
开放=真实;
}
/**
*返回数据包是否为空。
*/
公共布尔值为空()
{
如果(numOfCrisps==0)
{
返回true;
}否则
返回false;
}
/**
*返回数据包是否已关闭。
*/
公共布尔值isClosed()
{
返回打开;
}
/**
*更改“打开”变量的布尔值。
*/
公开作废
{
打开=!打开;
}
/**
*返回薯片包的味道。
*/
公共字符串getFlavor()
{
返味;
}
/**
*将薯片的数量减少1,直到包装为空。
*/
公共薯片()
{
如果(打开)
{
System.out.println(“需要先打开包!”);

}else if((numOfCrisps>1)和&(numOfCrisps注:这是上面的一条评论,但我将其“提升”为一个答案

根据你的更新2和上面的截图,我猜


BlueJ弹出的文本框可能允许您键入变量名或字符串。如果您希望它是字符串,请键入带引号的“BBQ”。

注意:这是上面的一条注释,但我正在“提升”它以获得答案

根据你的更新2和上面的截图,我猜


BlueJ弹出的文本框可能允许您键入变量名或字符串。如果您希望它是字符串,请键入带引号的“BBQ”。

在引号中键入BBQ,如“BBQ”。
它会起作用的

在下面的“bbq”中键入bbq。
swing类在哪里?如何获取textbox?命令行?+1在您的评论中-如果不看到用法,很难调试。您不会从该代码中得到警告,
bbq
在任何地方都不会出现。另外:
open()
由于没有“打开”而命名错误,它会切换打开状态。另外:
public boolean isEmpty(){return numOfCrisps==0}
。另外:
if(open){//need to open first}
没有任何意义。您如何称呼它为PackOfCrisps bbq=new PackOfCrisps(“bbq”)根据您的更新2,我猜BlueJ弹出的文本框可能允许您键入变量名或字符串。如果您希望它是字符串,请键入“BBQ”带引号。如果看不到更多代码、堆栈跟踪或我自己使用BlueJ,则很难确定swing类在哪里?如何获取textbox?命令行?+1在您的注释中-如果看不到用法,则很难调试。您不会从该代码中得到警告,
bbq
不会出现在任何地方。另外:
open()
名称错误,因为它没有“打开”,它会切换打开状态。另外:
公共布尔值isEmpty(){return numOfCrisps==0}
。另外:
如果(打开){//need to open first}
没有任何意义。你怎么称呼它为PackOfCrisps bbq=new PackOfCrisps(“bbq”)根据你的更新2,我猜,BlueJ弹出的文本框可能允许你输入变量名或字符串。如果你想输入字符串,请输入带引号的“BBQ”。如果没有看到更多的代码、堆栈跟踪或使用BlueJ本人,则很难确定。