Blog coding and discussion of coding about JavaScript, PHP, CGI, general web building etc.

Tuesday, March 22, 2016

Java getting

Java getting "Illegal start of expression" and "';' expected" errors for a method?


EDIT: I figured it out and finished the program (finally). Thanks everyone for your help!

I'm trying to create a simple paint program where the user can click on radio buttons to choose a shape that they can draw on the panel by dragging with the mouse. I do simply want the code to do this, as I want to figure it out on my own and think that I can. BUT I'm getting these errors on the line declaring the method "public void newShape(String shape) {". I am getting 4 errors on this one line. Two of them are "error: illegal start of expression", and the other two are "error: ';' expected". If someone could help me out and tell me what I'm doing wrong I would greatly appreciate it.

import javax.swing.*;  import java.awt.*;  import java.awt.event.*;  import java.util.*;  import javax.swing.event.*;    public class HW4_Paint extends JFrame {    private static Color color = Color.BLACK; // current selected drawing color      private static boolean filled = false; // fill mode - "Filled" or "Empty"      private static String currentShape = "Line"; // current selected shape      private static ArrayList shapes = new ArrayList(); // a list of all of the shapes in the current drawing        public static void main(String[] args) {            // create the frame and format it          JFrame frame = new HW4_Paint();          frame.setTitle("Paint Program");          frame.setSize(800,500);          frame.setVisible(true);          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        }        public HW4_Paint() {            // create the menu bar          JMenuBar jmb = new JMenuBar();          setJMenuBar(jmb);            // make the file menu          JMenu fileMenu = new JMenu("File");          fileMenu.setMnemonic('F');          jmb.add(fileMenu);            // make the exit menu item under the file menu          JMenuItem exitMenuItem = new JMenuItem("Exit", 'X');          fileMenu.add(exitMenuItem);          exitMenuItem.addActionListener(new ActionListener() {              public void actionPerformed(ActionEvent e) {              System.exit(0);          }          });            // make the help menu          JMenu helpMenu = new JMenu("Help");          helpMenu.setMnemonic('H');          jmb.add(helpMenu);            // make the help menu item under the help menu          JMenuItem helpMenuItem = new JMenuItem("Help", 'H');          helpMenu.add(helpMenuItem);          helpMenuItem.addActionListener(new ActionListener() {          public void actionPerformed(ActionEvent e) {              String message = "This program allows you to draw pictures using different shapes and colors.\n"                                + "To change what shape you are drawing with, select the button next to Line, Oval, or Rectangle, depending on which shape you want to draw with.\n"                               + "If you want the shape to be filled in (only applicable with oval and rectangle), select the checkbox next to Filled.\n"                               + "To change the color of the shape that you are drawing, click the button of the color that you want to change to.\n"                               + "To undo the last shape that you drew, click the undo button once. You can repeat this as many times as you want until there are no remaining shapes.\n"                               + "To clear all of the shapes that you have drawn, click the Clear All button.";                JOptionPane.showMessageDialog(null, message, "Help", JOptionPane.INFORMATION_MESSAGE);              }          });            // make the about menu item under the help menu          JMenuItem aboutMenuItem = new JMenuItem("About", 'A');          helpMenu.add(aboutMenuItem);          aboutMenuItem.addActionListener(new ActionListener() {          public void actionPerformed(ActionEvent e) {              String message = "HW4_Paint Program\n\n" + "Written by Joey Drees\n\n" + "CSC 360-001";              JOptionPane.showMessageDialog(null, message, "About", JOptionPane.INFORMATION_MESSAGE);          }          });            // make the panels that will be added to the frame for the GUI          JPanel guiPanel = new JPanel();          guiPanel.setLayout(new BorderLayout());          JPanel colorPanel = new JPanel(new FlowLayout());          JPanel buttonPanel = new JPanel(new GridLayout(6,1));          JPanel drawingPanel = new DrawingPanel();            // add the guiPanel to the frame and them add the other panels to the guiPanel          add(guiPanel);          guiPanel.add(colorPanel, BorderLayout.SOUTH);          guiPanel.add(buttonPanel, BorderLayout.EAST);          guiPanel.add(drawingPanel, BorderLayout.CENTER);        // create and add the buttons that will allow the user to change the color of the shapes          JButton blackButton = new JButton("Black");          colorPanel.add(blackButton);          blackButton.setSelected(true);          JButton whiteButton = new JButton("White");          colorPanel.add(whiteButton);          JButton grayButton = new JButton("Gray");          colorPanel.add(grayButton);          JButton redButton = new JButton("Red");          colorPanel.add(redButton);          JButton yellowButton = new JButton("Yellow");          colorPanel.add(yellowButton);          JButton greenButton = new JButton("Green");          colorPanel.add(greenButton);          JButton blueButton = new JButton("Blue");          colorPanel.add(blueButton);          JButton newColorButton = new JButton("New Color");          colorPanel.add(newColorButton);            // create and add the radio buttons to a button group that will allow the user to change the shape they are drawing with          ButtonGroup jbtGroup = new ButtonGroup();          JRadioButton jrbLine = new JRadioButton("Line");          jrbLine.setMnemonic('L');          jbtGroup.add(jrbLine);          buttonPanel.add(jrbLine);          jrbLine.setSelected(true);          jrbLine.addActionListener(new ActionListener() {          public void actionPerformed(ActionEvent E) {              currentShape = "Line";              guiPanel.newShape(currentShape);              repaint();          }          });          JRadioButton jrbOval = new JRadioButton("Oval");          jrbOval.setMnemonic('O');          jbtGroup.add(jrbOval);          buttonPanel.add(jrbOval);          jrbOval.addActionListener(new ActionListener() {          public void actionPerformed(ActionEvent E) {              currentShape = "Oval";                        guiPanel.newShape(currentShape);              repaint();          }          });          JRadioButton jrbRectangle = new JRadioButton("Rectangle");          jrbRectangle.setMnemonic('R');          jbtGroup.add(jrbRectangle);          buttonPanel.add(jrbRectangle);          jrbLine.addActionListener(new ActionListener() {          public void actionPerformed(ActionEvent E) {              currentShape = "Rectangle";              guiPanel.newShape(currentShape);              repaint();          }          });            // create and add the check box that will allow the user to create filled shapes          JCheckBox jcbFilled = new JCheckBox("Filled");          jcbFilled.setMnemonic('F');          buttonPanel.add(jcbFilled);          if (jrbLine.isSelected())          jcbFilled.setEnabled(false);          else          jcbFilled.setEnabled(true);            // create and add the buttons that will allow the user to undo their last shape and clear the whole panel          JButton undoButton = new JButton("Undo");          undoButton.setMnemonic('U');          buttonPanel.add(undoButton);          JButton clearAllButton = new JButton("Clear All");          clearAllButton.setMnemonic('C');          buttonPanel.add(clearAllButton);            // create the action listener for the undo button          undoButton.addActionListener(new ActionListener() {          public void actionPerformed(ActionEvent e) {              if (!shapes.isEmpty()) {              shapes.remove(shapes.size() - 1);              repaint();          }          }      });        // create the action listener for the clear all button          clearAllButton.addActionListener(new ActionListener() {      public void actionPerformed(ActionEvent e) {          if (!shapes.isEmpty()) {              shapes.clear();          repaint();          }      }      });        public void newShape(String shape) {        switch (shape) {          case "Line":              Shape line = new Line(startX, startY, endX, endY);          shapes.add(line);          break;              case "Oval":          Shape oval = new Oval(startX, startY, endX, endY);          shapes.add(oval);          break;          case "Rectangle":          Shape rectangle = new Rectangle(startX, startY, endX, endY);          shapes.add(rectangle);          break;          default:          System.out.println("ERROR. Check logic.");      }      }  }  }    private class DrawingPanel extends JPanel {    private int startX, startY, endX, endY;        public DrawingPanel() { // sets the background to white and adds the required listeners            setBackground(Color.WHITE);          addMouseListener(new MouseAdapter() {              public void mousePressed(MouseEvent e) {              startX = endX = e.getX();              startY = endY = e.getY();          }          });          addMouseMotionListener(new MouseMotionAdapter() {          @Override          public void mouseDragged(MouseEvent e) {              endX = e.getX();              endY = e.getY();              Shape lastShape = shapes.get(shapes.size()-1);              lastShape.setEnd(endX, endY);              repaint();          }          });      }       public void paintComponent(Graphics g) {            super.paintComponent(g);          for (Shape shape: shapes)          shape.draw(g);      }  }  

Answer by SpringLearner for Java getting "Illegal start of expression" and "';' expected" errors for a method?


There are two extra curly braces

}  }  

Remove these two

You need to keep one } in the constructor HW4_Paint() and remove one } from the method newShape(String shape)

Answer by Christian Ternus for Java getting "Illegal start of expression" and "';' expected" errors for a method?


Welcome to StackOverflow! I commend your desire to solve your problem on your own, so I won't just hand you the answer.

You're getting that message because newShape() is in the wrong place. Perhaps it's too far into a scope? Perhaps it's too far out of it? Check the indentation of your program in its IDE -- where is it sitting? Do you expect it to be there?

Answer by Alex for Java getting "Illegal start of expression" and "';' expected" errors for a method?


} // ADD IT HERE           public void newShape(String shape) {            switch (shape) {              case "Line":                  Shape line = new Line(startX, startY, endX, endY);              shapes.add(line);              break;                  case "Oval":              Shape oval = new Oval(startX, startY, endX, endY);              shapes.add(oval);              break;              case "Rectangle":              Shape rectangle = new Rectangle(startX, startY, endX, endY);              shapes.add(rectangle);              break;              default:              System.out.println("ERROR. Check logic.");          }          }      } // REMOVE IT FROM HERE      }  

Answer by MadProgrammer for Java getting "Illegal start of expression" and "';' expected" errors for a method?


You seem to be declaring the newShape method within the constructor of the HW4_Paint class.

Add a } before the public void newShape(String shape) { and remove one } after the method.

It should look more like...

        // create the action listener for the clear all button          clearAllButton.addActionListener(new ActionListener() {              public void actionPerformed(ActionEvent e) {                  if (!shapes.isEmpty()) {                      shapes.clear();                      repaint();                  }              }          });      } // Add me        public void newShape(String shape) {            switch (shape) {              case "Line":                  Shape line = new Line(startX, startY, endX, endY);                  shapes.add(line);                  break;              case "Oval":                  Shape oval = new Oval(startX, startY, endX, endY);                  shapes.add(oval);                  break;              case "Rectangle":                  Shape rectangle = new Rectangle(startX, startY, endX, endY);                  shapes.add(rectangle);                  break;              default:                  System.out.println("ERROR. Check logic.");          }      }      // Remove a } from here, so you should end with these 3, not 4  }  

Answer by Louise for Java getting "Illegal start of expression" and "';' expected" errors for a method?


As far as I have found, errors like "illegal start of expression" or "';' expected" usually means you did something wrong with the {}. I had 38 errors entirely unrelated to the actuall lines of code but all due to a forgotten }.


Fatal error: Call to a member function getElementsByTagName() on a non-object in D:\XAMPP INSTALLASTION\xampp\htdocs\endunpratama9i\www-stackoverflow-info-proses.php on line 72

0 comments:

Post a Comment

Popular Posts

Powered by Blogger.