I’m sorry if this is a weird question but I’ve just started OOP and ran across this problem for a simple menu driven math program that I was supposed to make. I cleared all the errors the compiler gave me but now it’s given me about 14 fresh errors most of which are described as ‘cannot find symbol.’ Here’s my code:
import java.util.Scanner;
public class MathMenu
{
//MENU METHOD
private static void menu(String args[])
{
int choice;
System.out.printf("Enter '1' to add");
System.out.printf("Enter '2' to subtract");
System.out.printf("Enter '3' to exit");
System.out.printf("\nPlease enter your choice: ");
choice=input.nextInt();
if (choice==1)
sum(n,m);
if (choice==2)
dif(n,m);
else if(choice==3)
return;
}
//SUM
private static int sum(int a, int b)
{
return n+m;
}
//DIFFERENCE
private static int dif(int a, int b)
{
if(n<m)
return m-n;
else
return n-m;
}
public static void main(String args[])
{
int n=15;
int m=8;
Scanner input = new Scanner(System.in);
menu();
}
}
And here’s the NEW compiler output:
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Users\Shahraiz Tabassam>cd c:\java\bin
c:\java\bin>javac MathMenu.java
MathMenu.java:7: error: no suitable constructor found for Scanner()
private static Scanner input = new Scanner();
^
constructor Scanner.Scanner(ReadableByteChannel,String) is not applicable
(actual and formal argument lists differ in length)
constructor Scanner.Scanner(ReadableByteChannel) is not applicable
(actual and formal argument lists differ in length)
constructor Scanner.Scanner(String) is not applicable
(actual and formal argument lists differ in length)
constructor Scanner.Scanner(Path,Charset) is not applicable
(actual and formal argument lists differ in length)
constructor Scanner.Scanner(Path,String) is not applicable
(actual and formal argument lists differ in length)
constructor Scanner.Scanner(Path) is not applicable
(actual and formal argument lists differ in length)
constructor Scanner.Scanner(File,CharsetDecoder) is not applicable
(actual and formal argument lists differ in length)
constructor Scanner.Scanner(File,String) is not applicable
(actual and formal argument lists differ in length)
constructor Scanner.Scanner(File) is not applicable
(actual and formal argument lists differ in length)
constructor Scanner.Scanner(InputStream,String) is not applicable
(actual and formal argument lists differ in length)
constructor Scanner.Scanner(InputStream) is not applicable
(actual and formal argument lists differ in length)
constructor Scanner.Scanner(Readable) is not applicable
(actual and formal argument lists differ in length)
constructor Scanner.Scanner(Readable,Pattern) is not applicable
(actual and formal argument lists differ in length)
MathMenu.java:64: error: method menu in class MathMenu cannot be applied to give
n types;
menu();
^
required: String[]
found: no arguments
reason: actual and formal argument lists differ in length
2 errors
c:\java\bin>
You never defined your
inputvariable in the body of themenumethod. Try addingScanner input = new Scanner(System.in)within themenumethod. Simply defining the variable inmaindoes not givemenuaccess to it. If you want to avoid creating aScannerinstance multiple times, you could do something likeThen you could use
inputfrom all of your methods.EDIT: I just noticed something similar for
mandn: you have to define them within the method in which they are being used, or make themstaticfields. If it was up to me I’d do it like this: