字符串文本中的标记语法错误

时间:2016-02-26 00:33:05

标签: java syntax-error

我不断在令牌上遇到#34;语法错误请删除这些令牌"在System.out.println的第一个实例之后的几乎所有System.out.println文本中。我不知道这意味着什么或如何解决它?我是一个非常新的开始,因此此代码中可能存在多个错误。我还得到"令牌上的语法错误""倍数是"",无效的AssignmentOperator"和"""平方是"",无效的AssignmentOperator"错误也是如此。这是一个具有最终结果的类的赋值    n的反面是y    n加倍是y    n的一半是y    n平方是y    n的倒数是y    n的十分之一是y,y的平方是z    n减去n的最后一位是y    n和n + 1和n + 2之和为y 谢谢!

import java.util.Scanner;
public class Arithmetic {
   public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter an integer: ");
        int n = scanner.nextInt();
        int opposite = n*-1;
        System.out.println("The opposite of" n "is" opposite);
        int twoTimes = n*2;
        System.out.println(n "doubled is" twoTimes);
        int half = n/2;
        System.out.println("half of "n "is" half);
        int square= n*n;
        System.out.println(n "squared is" square);
        int reciprocal= 1/n;
        System.out.println("the reciprocal of" n "is" reciprocal);
        double fraction = n*.10;
        double fractionTwo = fraction*fraction;
        System.out.println("one-tenth of" n "is" fraction "and" fraction "squared is" fractionTwo);
        // int lastDigit = 
        // System.out.println();
        int sum= n+1;
        int sumTwo= n+2;
        int sumTotal= sum + sumTwo;
        System.out.println("the sum of" n "and" sum "and" sumTwo "is" sumTotal);

    }
}

**如果有人想帮我弄清楚" n + 1" /" n + 2"公式以及如何在代码中格式化它,这将是值得赞赏的!

2 个答案:

答案 0 :(得分:1)

此代码存在一些错误。

  • 您没有在任何打印到控制台上正确连接。

    System.out.println("The opposite of" n "is" opposite);
    

    应该是:

    System.out.println("The opposite of" + n + "is" + opposite);
    

    当我们想要结合字符串时,我们使用+符号。

  • int reciprocal= 1/n;无效; 假设double reciprocal= 1.0/n;n,应为int

  • “n + 1”/“n + 2”只是:double result = (n + 1.0) / (n + 2.0);假设nint。< p>

  • 答案 1 :(得分:1)

    这不是你如何连接(链接)两个字符串!

    此代码和其他类似代码

        System.out.println(n "doubled is" twoTimes);
    

    错了。

    我想您想将n"doubled is"twoTimes联系在一起,对吗?

    现在你用空格链接它们。但Java中的空格字符并不能连接字符串。这就是编译器抱怨的原因。

    在Java中,+两者用于添加字符串串联!所以你应该将上面改为:

    System.out.println(n + "doubled is" + twoTimes);
    

    但是等等!你的空间去了哪里?这是因为+没有自动为您添加空间,您需要自己添加。

    System.out.println(n + " doubled is " + twoTimes);
    

    或者,您可以使用String.format格式化字符串。此

    /* Explanation: n will be "inserted" to the first %d and twoTimes will
    be inserted to the second %d. And %d basically means "express the thing in
    decimal"*/
    String.format("%d doubled is %d", n, twoTimes)
    

    相同
    n + " doubled is " + twoTimes
    

    关于你的公式问题:

    在Java中,有两种不同的数字类型,intdouble。 (实际上还有更多,但它们无关紧要)intdouble在划分时会做出不同的事情。他们有不同的文字。

    5int字面值,5.0double字面值。看到?没有小数位的数字是int s,带小数位的数字叫double s。

    那么你的配方有什么问题?我们先来看看划分intdouble

    的结果是什么
    int / int: 1 / 5 = 0
    int / double: 1 / 5.0 = 0.2
    double / int: 1.0 / 5 = 0.2
    double / double: 1.0 / 5.0 = 0.2
    int / 0: 1 / 0 = Exception!
    double / 0: 1.0 / 0 = NaN
    

    在您的代码中:

    int reciprocal= 1/n;
    

    和其他类似的行,你正在进行int的划分。这就是为什么上面的代码不起作用的原因。你应该做的是将其中一个数字改为双数!并将类型更改为double

    double reciprocal = 1.0 / n;
    ------              ---
    changes          here as well!