类型/表达式的非法启动(支架放置帮助?)

时间:2016-06-17 18:43:44

标签: java compiler-errors syntax-error expression brackets

所以我对java很新,我正在尝试编写一个程序,可以为过期的书籍打印正确的罚款。我已经读过这样的多个问题,其中大多数都涉及大括号错位,但我无法在任何地方找到括号错误。我的程序中一直出现多个错误,但大多数读取“非法启动类型”或“非法启动表达”有人可以帮我处理我的代码/给我一些关于支架放置的提示吗?

这是我的代码:

public class BookFine
{ 
    public static void main(String[] args)
    {
        int daysLate = 0;
        int bookCost = 0;
        int result = 0;

        System.out.print("Enter how many days your book is overdue: ");
        int daysLate = IO.readInt();
        System.out.println("Days Late = " + daysLate);

        System.out.print("How much does your book cost(enter in cents): ");
        int bookCost = IO.readInt();
        System.out.println("Book Cost = " + bookCost);

        if (daysLate=<7)
        {
            result=daysLate*10;
        }
        else 
            if(daysLate>7)
            {
                result=(daysLate-7)*20+70;
            }

        if(daysLate>90)
        {
            result= bookCost+1000;
        }

        IO.outputStringAnswer(result);
    }
}

4 个答案:

答案 0 :(得分:0)

在程序中两次声明变量存在问题。我已经纠正了代码。请参考以下代码。

public class BookFine {
public static void main(String[] args)
{   int daysLate = 0;
    int bookCost = 0;
    int result = 0;

    System.out.print("Enter how many days your book is overdue: ");
    daysLate = IO.readInt();
    System.out.println("Days Late = " + daysLate);

    System.out.print("How much does your book cost(enter in cents): ");
    bookCost = IO.readInt();
    System.out.println("Book Cost = " + bookCost);

    if (daysLate<=7)
    {
        result=daysLate*10;
    }
    else 
        if(daysLate>7)
        {
            result=(daysLate-7)*20+70;
    }

    if(daysLate>90)
    {
        result= bookCost+1000;
    }


    IO.outputStringAnswer(result);
}
}

答案 1 :(得分:0)

您的其他分支似乎没有括号

else 
if(daysLate>7)
    {
        result=(daysLate-7)*20+70;
}

if(daysLate>90)
{
    result= bookCost+1000;
}

应该是

else 
{
    if(daysLate>7)
    {
        result=(daysLate-7)*20+70;
    }

    if(daysLate>90)
    {
        result= bookCost+1000;
    }
}

答案 2 :(得分:-1)

我能够识别的代码中有几个错误。

首先是表达式:

if(daysLate=<7)

倒退了。它应该读

if(daysLate<=7)

接下来,在main下面的代码的开头,您将声明变量“daysLate,bookCost”。然后,在您的行之后:

System.out.print("Enter how many days your book is overdue: ");

您要将变量重新声明为:

int DaysLate

删除daysLate和bookCost上的“int”部分,假设你在某处定义了IO类,它应该运行正常。

答案 3 :(得分:-1)

这里有一些问题。

  1. daysLate=<7;我假设你的意思是使用&lt; =运算符。修复此问题将解决您提出的特定错误
  2. int daysLate = IO.readInt();;这一行的问题在于您已经声明了一个名为&#39; daysLate&#39;的变量。这可以通过以下两种方式之一修复:删除&#39; int&#39;在这一行的开头,或删除第4行的原始声明。(我更喜欢前者。)
  3. IO.readInt();没有名为IO的类,至少不是代码导入的内容。但是,有许多不同的方法可以从键盘读取输入。如果这是您的意图(看起来是这样),您可能需要查找java.util.Scanner类的文档和示例。我再说一遍,有不止一种方法可以实现这一点,即使你不想使用扫描仪,所以选择你的毒药:)
  4. IO.outputStringAnswer(result);与#3相同,但这次看起来你似乎试图在某处输出结果。也许System.out.println()在这里按顺序排列。
  5. int bookCost = IO.readInt();与#2和#3相同。 &#39; bookCost&#39;已在此范围内定义,因此您无需再次声明它(删除&#39; int&#39;)。而且,您需要编写工作键盘输入。
  6. 最后 - 这不是错误本身 - 您应该使用Indent Style。它将极大地帮助您提高代码的可读性,从而帮助您编写更好的代码。您和您的同事喜欢阅读的代码是良好的(并且希望是健康的)代码。从我的经验来看,现在大多数开发人员都使用1TBF风格。
  7. 哦,欢迎来到Java!