解析变量和左侧分配以及计算++令牌时出错

时间:2013-10-04 08:37:36

标签: java token java.util.scanner

我开始盲目地看着我的代码,我的大脑即将过热。在编程时我是新手。

public class RecyclingSystem {

public static void main(String[] args) {

System.out.println("Please put in a valid bottle");


    Scanner sc = new Scanner(System.in);



    while ( sc.nextInt() != -1) {

        if (sc.nextInt(char a) = getaBottle);
                int bottleAcount++;
    } else if { (sc.nextInt(char b) = getbBottle);
                int bottleBcount++;
    } else if { (sc.nextInt(char c) = getcBottle);
                int bottleCcount++;
    } else { throw new EmptyStackException(); 
        System.out.println("Bottle not recognized");
    }
    System.out.println("The total number of bottles is " + totalBottlecount);
    System.out.println();
    System.out.println("The total amount returned is " + sumOfBottles );
    }
    sc.close();
}

}}

public class Bottle {

private static final double A_BOTTLE = 1.0;
/**
 * @return the aBottle
 */
public static double getaBottle() {
    return A_BOTTLE;
}
/**
 * @return the bBottle
 */
public static double getbBottle() {
    return B_BOTTLE;
}
/**
 * @return the cBottle
 */
public static double getcBottle() {
    return C_BOTTLE;
}
private static final double B_BOTTLE = 1.5;
private static final double C_BOTTLE = 3.0;

}

public class EmptyStackException扩展Exception {

}

public class bottleCount {

int bottleAcount = 0;

int bottleBcount = 0;

int bottleCcount = 0; 

int totalBottleCount = bottleAcount + bottleBcount + bottleCcount;

}

我有getbottle,totalBottlecount和bottlecount变量的单独类。

我想制作一个基于用户输入的回收系统模拟器,如果有意义的话,有3种不同类型的瓶子,它们被分配不同的值,总瓶数和3种瓶子类型的总和结合。

我遇到了几个编译器错误,我花了两个小时试图解决所有这些错误,但每次我都会发生新错误,现在我得到了一个“编码器阻塞”。

我被要求删除++令牌,编译器无法解析我的变量和语法错误。我真的很感激一些见解,因为我只有~3周的java编程。

更新:编译器错误精确复制意大利面

Multiple markers at this line
    - Syntax error, insert ")" to complete Expression
    - Duplicate method nextInt(char) in type RecyclingSystem
    - Syntax error, insert "}" to complete Block
    - Syntax error, insert "AssignmentOperator Expression" to complete Assignment
    - Return type for the method is missing
    - Syntax error on tokens, delete these tokens
    - The left-hand side of an assignment must be a variable
    - Syntax error, insert "AssignmentOperator Expression" to complete Expression
    - The left-hand side of an assignment must be a variable
    - Syntax error, insert ";" to complete BlockStatements
    - Syntax error on tokens, delete these tokens
    - Syntax error on token ")", { expected after this token
    - Syntax error, insert ";" to complete Statement

4 个答案:

答案 0 :(得分:0)

int bottleAcount++;

在java中,你需要声明像

这样的局部变量

type name =初始值;

然后对此进行任何操作,如增量或减量。

在你的情况下,在使用zero作为初始值的循环之前声明变量,如

int  bottleAcount = 0;

然后在里面,然后将它增加1,如bottleAcount++;

bottleAcount += 1;

答案 1 :(得分:0)

所以...如果这是所有的代码,那么有很多问题,我可以在开始时推荐什么 - 回到一些基本的Java编程课程。

让我们看一下第一行:

if (sc.nextInt(char a) = getaBottle);

  • 首先,这是一个条件,您sc.nextInt(char a)分配 getaBottle的值。
  • 其次,nextInt(char a)看起来像方法声明,而不是方法调用。
  • 第三,从未在
  • 之前声明getaBottle
  • 第四,您在getaBottle()类中有一个Bottle方法,您可能希望使用它而不是getaBottle,它应该是一个变量

......等等。

此代码甚至不是有效的Java代码。在这个问题中,你很难以某种方式帮助你,你只需要学习更多,我鼓励你这样做。

祝你好运,如遇特定的问题 - 请来询问!

答案 2 :(得分:0)

else if { (sc.nextInt(char b) = getbBottle);
                int bottleBcount++;
    }

使用==而非=来检查if.Also条件是完全错误的。它应该是:

else if (sc.nextInt(char b) == getbBottle);
                int bottleBcount++;

你也不能int bottleBcount++。它毫无意义。由于您已在另一个类中声明了bottleBcount,因此必须使用该类的对象来访问它。在此之前,将类中的声明从int bottleAcount = 0;更改为public int bottleAcount = 0;。对所有瓶子都这样做。 现在您可以将其用作:

public static void main(String[] args) {

System.out.println("Please put in a valid bottle");

     bottleCount counter = new bottleCount();
    Scanner sc = new Scanner(System.in);



    while ( sc.nextInt() != -1) {

        if (sc.nextInt(char a) == getaBottle);
                counter.bottleAcount++;
    } else if (sc.nextInt(char b) == getbBottle);
                counter.bottleBcount++;
    else if (sc.nextInt(char c) == getcBottle);
                counter.bottleCcount++;
     else { throw new EmptyStackException(); 
        System.out.println("Bottle not recognized");
    }
    System.out.println("The total number of bottles is " + totalBottlecount);
    System.out.println();
    System.out.println("The total amount returned is " + sumOfBottles );
    }
    sc.close();
}

声明int totalBottleCount = bottleAcount + bottleBcount + bottleCcount;也没有意义。它不会像你想要的那样工作。您需要编写一个函数来执行此添加,然后调用它。或者,如果您希望这只发生一次(我怀疑),您可以将它放在构造函数中。

我建议你在继续之前了解class和变量声明概念

答案 3 :(得分:0)

你刚才遇到问题:

else { 
    throw new EmptyStackException(); 
    System.out.println("Bottle not recognized");
}

检查正确的语法并解决错误。