1

Firstly, here are the instructions for the program I am to put together...

Provide a main method. It should:  Get input for a string and a shift value  Convert to upper case  Only perform the following items on alphabetic characters between A and Z  Utilize a for loop which uses postfix incrementing operator o Convert character to its ASCII equivalent (type cast) o Shift b y shift value entered above  If you reach end of alphabe t, wrap around  Example: A shifted to the left 2 would become Y o Convert back to its character equivalent (type cast) o Output the new character  Get input for a string and a shift value  Perform same steps above to convert the encrypted text back to plain text  Be sure to get input again as a different encrypted text may be entered  Main method can call separate method to perform encryption/decryption but not required. Utilize postfix increment/decrement operations and compound assignment operators for all math. E xample: x++ or x+=2.

The code I have so far is:

/*
JursekGregChapter12t.java
Greg Jursek

This program will encrypt entered text by a user input 
shift value and then decrypt text in the same manner.
*/

import java.lang.*;

import java.util.*;

public class JursekGregChapter12t
{
    public static void main(String[] args)
{
    Scanner stdIn = new Scanner(System.in);
    String encryptText; // text to be encrypted
    String decryptText; // text to be decrypted
    int shiftValue; // the number of spaces that will be shifted via user input


    // User enters plain text for encryption
    System.out.print("Please enter text to encrypt");
    encryptText = stdIn.nextString();

    // User enters a shift value
    System.out.println("Please enter shift value");
    shiftValue = stdIn.nextInt();

    // System prints the encrypted text
    String encryptedText = encrypt(encryptText , shiftValue); // text that has been encrypted
    System.out.println(encryptedText);

    // User enters text for decryption
    System.out.print("Please enter text to decrypt");
    decryptText = stdIn.nextString();

    // User enters a shift value
    System.out.println("Please enter shift value");
    shiftValue = stdIn.nextInt();

    // System prints the decrypted text
    String decryptedText = decrypt(decryptText , shiftValue); // text that has been decrypted
    System.out.println(decryptedText);
} // end main


        // Shift and Character Manipulation
        public static String shift(String enteredText, int shiftValue) 
        {

            String convertedText = "";
            for(int i = 0; i< enteredText.length(); i++)
            {
                char lowerCase = enteredText.charAT(i);

                //Convert to upper case letters
                char lowerCase = Character.toUpperCase(lowerCase);
                int charNumber = upperLetter;

                //Shift letters and wrap text
                int rotateLetters = (charNumber + shiftValue) % 26;
                char shiftLetters = (char) rotateShift;

                //Populate new string of characters
                convertedText += shiftLetters;
            }
        return convertedText;
        }

        // Encryption code
        public static String encrypt(String enteredText, int shiftValue);
        {
            String encryptedString = rotate(enteredText , shiftValue);
            return encryptedString;
        }

        // Decryption code
        public static String decrypt(String enteredText, int shiftValue);
        {
            int negativeShiftValue = (-1) * (shiftValue);
            String decryptedString = rotate(enteredText , negativeShiftValue);
            return decryptedString;
        }


} //end class JursekGregChapter12t

At this point I am getting a lot of strange errors and I'm not quite sure what's gone wrong...those errors are:

/Users/Greg/Documents/Programming/Java/JursekGregChapter12t.java:24: error: cannot find symbol
        encryptText = stdIn.nextString();
                           ^
  symbol:   method nextString()
  location: variable stdIn of type Scanner
/Users/Greg/Documents/Programming/Java/JursekGregChapter12t.java:36: error: cannot find symbol
        decryptText = stdIn.nextString();
                           ^
  symbol:   method nextString()
  location: variable stdIn of type Scanner
/Users/Greg/Documents/Programming/Java/JursekGregChapter12t.java:55: error: cannot find symbol
                    char lowerCase = enteredText.charAT(i);
                                                ^
  symbol:   method charAT(int)
  location: variable enteredText of type String
/Users/Greg/Documents/Programming/Java/JursekGregChapter12t.java:58: error: variable lowerCase is already defined in method shift(String,int)
                    char lowerCase = Character.toUpperCase(lowerCase);
                         ^
/Users/Greg/Documents/Programming/Java/JursekGregChapter12t.java:59: error: cannot find symbol
                    int charNumber = upperLetter;
                                     ^
  symbol:   variable upperLetter
  location: class JursekGregChapter12t
/Users/Greg/Documents/Programming/Java/JursekGregChapter12t.java:63: error: cannot find symbol
                    char shiftLetters = (char) rotateShift;
                                               ^
  symbol:   variable rotateShift
  location: class JursekGregChapter12t
/Users/Greg/Documents/Programming/Java/JursekGregChapter12t.java:72: error: missing method body, or declare abstract
            public static String encrypt(String enteredText, int shiftValue);
                                 ^
/Users/Greg/Documents/Programming/Java/JursekGregChapter12t.java:74: error: cannot find symbol
                String encryptedString = rotate(enteredText , shiftValue);
                                                ^
  symbol:   variable enteredText
  location: class JursekGregChapter12t
/Users/Greg/Documents/Programming/Java/JursekGregChapter12t.java:74: error: cannot find symbol
                String encryptedString = rotate(enteredText , shiftValue);
                                                              ^
  symbol:   variable shiftValue
  location: class JursekGregChapter12t
/Users/Greg/Documents/Programming/Java/JursekGregChapter12t.java:75: error: return outside method
                return encryptedString;
                ^
/Users/Greg/Documents/Programming/Java/JursekGregChapter12t.java:79: error: missing method body, or declare abstract
            public static String decrypt(String enteredText, int shiftValue);
                                 ^
/Users/Greg/Documents/Programming/Java/JursekGregChapter12t.java:81: error: cannot find symbol
                int negativeShiftValue = (-1) * (shiftValue);
                                                 ^
  symbol:   variable shiftValue
  location: class JursekGregChapter12t
/Users/Greg/Documents/Programming/Java/JursekGregChapter12t.java:81: error: illegal start of type
                int negativeShiftValue = (-1) * (shiftValue);
                                                ^
/Users/Greg/Documents/Programming/Java/JursekGregChapter12t.java:82: error: cannot find symbol
                String decryptedString = rotate(enteredText , negativeShiftValue);
                                                ^
  symbol:   variable enteredText
  location: class JursekGregChapter12t
/Users/Greg/Documents/Programming/Java/JursekGregChapter12t.java:83: error: return outside method
                return decryptedString;
                ^
15 errors
[Finished in 0.7s with exit code 1]

Any help is appreciated.

Thanks.

After resolving some of the errors:

/Users/Greg/Documents/Programming/Java/JursekGregChapter12t.java:56: error: cannot find symbol
                char lowerCase = enteredText.charAT(i);
                                            ^
  symbol:   method charAT(int)
  location: variable enteredText of type String
/Users/Greg/Documents/Programming/Java/JursekGregChapter12t.java:59: error: variable      lowerCase is already defined in method shift(String,int)
                char lowerCase = Character.toUpperCase(lowerCase);    
                         ^
/Users/Greg/Documents/Programming/Java/JursekGregChapter12t.java:60: error: cannot find symbol
                int charNumber = upperLetter;
                                     ^
  symbol:   variable upperLetter
  location: class JursekGregChapter12t
/Users/Greg/Documents/Programming/Java/JursekGregChapter12t.java:64: error: cannot find symbol
                    char shiftLetters = (char) rotateShift;
                                               ^
  symbol:   variable rotateShift
  location: class JursekGregChapter12t
/Users/Greg/Documents/Programming/Java/JursekGregChapter12t.java:75: error: cannot find symbol
                String encryptedString = rotate(enteredText , shiftValue);
                                         ^
      symbol:   method rotate(String,int)
  location: class JursekGregChapter12t
/Users/Greg/Documents/Programming/Java/JursekGregChapter12t.java:83: error: cannot find symbol
                String decryptedString = rotate(enteredText , negativeShiftValue);
                                         ^
  symbol:   method rotate(String,int)
  location: class JursekGregChapter12t
6 errors
[Finished in 0.7s with exit code 1]

I've spent the last 2 hours reading up on stuff and I still cant understand what's holding my code back here. I'm very much a novice programmer, Java is my first foray into it and I'm just completely stuck. Does anyone have any ideas?

1
  • Lines like char lowerCase = Character.toUpperCase(lowerCase); always gives me the creeps. Commented Apr 5, 2014 at 18:55

1 Answer 1

1

Those are compiler errors, and each one tells you exactly what is wrong. Here's a quick list of the issues and resolutions (without writing all your code for you):

  • cannot find symbol: This means that you're using a name that's undefined. For instance, on line 24, you use stdIn.nextString(), but Scanner objects do not have a method called nextString (you probably want either next() or nextLine()). Thus, the compiler "cannot find the symbol" nextString because it doesn't exist (or charAT, because of the capitalization error).
  • variable X is already defined: This means exactly what it sounds like. When you get this error, it's because you're declaring variables twice. Once you declare a variable (e.g. char lowercase), you can simply use it (e.g. lowercase = 'a';) within that scope without declaring it again.
  • missing method body: This means you've got a method stub declared. Unless they are abstract, all methods must have a body enclosed in curly braces, and must return the type they are declared to return. In your particular case, you just need to get rid of the semicolons at the end of your encrypt and decrypt declarations.
  • return outside method means that you have a return statement that's floating in a class all by itself, which wouldn't make any sense. In this case, this problem will go away once you get rid of the semicolons at the end of encrypt and decrypt, so that those blocks will be recognized as method bodies.
  • illegal start of type is a more subtle error, but in your case it's just happening because of the fact that those blocks are currently at the class level rather than being method bodies. That problem will go away when you fix the return outside method issue.
Sign up to request clarification or add additional context in comments.

4 Comments

Edited main post to reflect current string of errors, the cannot find symbol, missing method and return outside method have been sorted out. Only 6 errors left. Still not sure why they are causing issues.
@user3081106 Your remaining errors are still all the same set of errors, with the same problems. I intentionally didn't mention the exact fixes for each instance of the errors; I'd rather give you the knowledge you need to resolve the issues yourself. Your errors are still mostly that you're attempting to use undefined variables. Check your spellings and make sure that you're using methods that actually exist.
@user3081106 I also highly recommend installing an IDE (Integrated Development Environment) for Java development, like Eclipse or NetBeans. It's like a text editor with knowledge of Java methods, syntax highlighting, and autocompletion. It can help you avoid all of these errors before you try to compile.
@HenryKeiter Right you are - although technically it is compiling - or at least parsing - the code in the background.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.