Shelby
Shelby

Reputation: 1

Syntax error on tokens in string text

I keep getting "syntax error on tokens please delete these tokens" on pretty much all of my System.out.println text after the first instance of System.out.println. I don't know what this means or how to fix it? I'm a very new beginning so there might be multiple mistakes in this code. I'm also getting "Syntax error on token ""doubled is"", invalid AssignmentOperator" and """squared is"", invalid AssignmentOperator" errors as well. This is an assignment for a class with the end result supposed to be the opposite of n is y n doubled is y one-half of n is y n squared is y the reciprocal of n is y one-tenth of n is y and y squared is z n minus the last digit of n is y the sum of n and n+1 and n+2 is y Thank you!

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);

    }
}

**also if anybody would like to help me figure out the "n+1"/"n+2" formula and how to format that in code that would be appreciated!

Upvotes: 0

Views: 1355

Answers (2)

Sweeper
Sweeper

Reputation: 271050

That's not how you concatenate (link) two strings!

This code, and other similar ones,

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

are wrong.

I think you want to link n, "doubled is" and twoTimes together, right?

Right now you are linking them with spaces. But space characters in Java doesn't concatenate strings. So that's why the compiler complained.

In Java, + is both used to do addition and concatenation of strings! So you should change the above to:

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

But wait! Where have your spaces gone? This is because + doesn't automatically adds a space for you, you need to add it yourself.

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

Alternatively, you can use String.format to format your string. This

/* 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)

is the same as

n + " doubled is " + twoTimes

Regarding your formula question:

In Java, there are two different number types, int and double. (There are actually a lot more, but they're irrelevant) int and double do different things when they are divided. And they have different literals.

5 is an int literal, 5.0 is a double literal. See? Numbers without decimal places are ints and those with decimal places are called doubles.

So what's wrong with your formula? Let's first take a look at what the is the result of dividing int and double

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

In your code:

int reciprocal= 1/n;

and other similar lines, you are doing division of int. So that's why the above code doesn't work. What you should do is change one of the numbers to a double! And also change the type to double.

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

Upvotes: 1

Ceelos
Ceelos

Reputation: 1126

There's a few mistakes with this code.

  • You're not concatenating correctly on any of your print to consoles.

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

    should be:

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

    When we want to combine Strings we use the + sign.

  • int reciprocal= 1/n; will not work; it should be double reciprocal= 1.0/n; assuming that n is an int.

  • "n+1"/"n+2" would simply be: double result = (n + 1.0) / (n + 2.0); assuming that n is an int.

    Upvotes: 1

  • Related Questions