Cannot be referenced from a static context
im trying to link my user interface to the Game class to jump,
i get the error - non static method jump() cannot be referenced from a static context
private void jButton1_actionPerformed(ActionEvent e)
System.out.println("\njButton1_actionPerformed(ActionEvent e) called.");
// code
Game.jump();
any ideas? thanks
ah, it works if i change jump() to static
i was now wondering how to make the user interface
work with this ethod in the Game() class
private void goRoom(Command command)
if(!command.hasSecondWord()) {
// if there is no second word, we don't know where to go...
System.out.println("Go where?");
return;
String direction = command.getSecondWord();
// Try to leave current room.
Room nextRoom = currentRoom.getExit(direction);
if (nextRoom == null)
System.out.println("There is no door!");
else {
currentRoom = nextRoom;
System.out.println(currentRoom.getLongDescription());
i was thinking something like
private void jButton1_actionPerformed(ActionEvent e)
// code
Game.goRoom(Command north);
it doesnt seem to like that though.. :s
Similar Messages
-
Non-static variable total cannot be referenced from a static context
i am trying to write a program that uses the if-else statements and when i wrote my program i got "non-static variable total cannot be referenced from a static context" for three lines of my input.
A:\Disks.java:20: non-static variable total cannot be referenced from a static context total = (10000 * .95 + ((diskCount - 10000) * .85));
^
A:\Disks.java:22: non-static variable total cannot be referenced from a static context total = (diskCount * .95);
^
A:\Disks.java:24: non-static variable total cannot be referenced from a static context System.out.print(total);
^
Do you know what I did wrong?I apologise in advance for the general tone of this reply.....
Ummm, let me think for a second... You referenced a non static
variable from a static context. Yup, yup. That's it !
If you can't figure this out, you really need to do a Java tutorial or
buy a text book. Basically though, total is a member of some class
and you are trying to use it from a static function. I bet you have
something like:
public class Test {
public int total;
// blah blah blah
public static void main(String[] args) {
// This won't work cos "total" is a member and we are static
System.out.println(total);
// This works cos now you have an instance to pull total
// out of.
Test t = new Total();
System.out.println(t.total);
} -
Non-static variable aceYears cannot be referenced from a static context
This is my error...
investment.java:53: non-static variable aceYears cannot be referenced from a static context
lwInvest.numberAceYears(aceYears);
^
This is my code...
public static void main (String[] args)
investment.Invest.numberAceYears(aceYears);
and more code
String termInvested = JOptionPane.showInputDialog
("Please enter the amount of years to invest your investment.");
int intTermInvested = Integer.parseInt(termInvested);
and yet more code..
public void numberAceYears (int aceYears)
for (int aY = 5 ; aY <= aceYears; aY++)
double aceInterest = aceCoBalance * aceCoRate /100;
aceCoBalance = aceCoBalance + aceInterest;
aceYears = aceYears + aY;
Suggestions?Short version: Either make the variable in question static, or create an instance of your class and use that to access it. Either one will work, but one probably suits your design better. It's up to you to figure out which one.
For details, see the relevant section of your favorite Java book or tutorial, or poke around here:
http://www.google.com/search?q=java+non+static+variable+cannot+be+referenced+from+a+static+context -
Non-static variable change cannot be referenced from a static context
My compiler says: : non-static variable change cannot be referenced from a static context
when i try to compile this. Why is it happening?
public class change{
int coin[] = {1,5,10,25,50};
int change=0;
public static void main(){
int val = Integer.parseInt(JOptionPane.showInputDialog(null, "Type the amount: ", "Change", JOptionPane.QUESTION_MESSAGE));
change = backtrack();
}A static field or method is not associated with any instance of the class; rather it's associated with the class itself.
When you declared the field to be non-static (by not including the "static" keyword; non-static methods and fields are much more common so it's the default), that meant that the field was a property of an object. But the static main method, being static, didn't have an object associated with it. So there was no "change" property to refer to.
An alternative way to get this work, would be to make your main method instantiate an object of the class "change", and put the functionality in other instance methods.
By the way, class names are supposed to start with upper-case letters. That's the convention. -
Non-static cannot be referenced from a static context - ?
Hi, i understand (kinda) what the error means
i think its saying that i cannot call a non-static method "bubbleSort"
from the static method main (correct?)
but i dont know how to fix it...
do i make bubbleSort
public static void bubbleSort???
C:\jLotto\dataFile\SortNumbers.java:80: non-static method bubbleSort(int[]) cannot be referenced from a static context
bubbleSort( a ); //sort the array into ascending numbers
my code:
import java.io.*;
import java.util.*;
public class SortNumbers
public static void main( String args[]) throws IOException
int num;
int a[] = new int[7]; //an array for sorting numbers
File inputFile = new File("C:\\jLotto\\dataFile\\outagain.txt");
File outputFile = new File("C:\\jLotto\\dataFile\\sortedNum.txt");
BufferedReader br = new BufferedReader( new FileReader( inputFile ));
PrintWriter pw = new PrintWriter( new FileWriter( outputFile ));
String line = br.readLine();
while( line != null ){//reads a single line from the file
StringBuffer buffer = new StringBuffer(31); //create a buffer
StringTokenizer st = new StringTokenizer( line," "); //create a tokenizer
while (st.hasMoreTokens()){
// the first 4 tokens are id,month,day,ccyy, no sorting needed
// so they are simply moved into the buffer
for (int i =1; i<5; i++){
num = Integer.parseInt(st.nextToken());
buffer.append( num );
buffer.append( "|");
//tokens 5 to 11 need to be sorted into acending order
//so read tokens 5 to 11 into an array for sorting
for (int i =0; i<7; i++){
a[i] = Integer.parseInt(st.nextToken());
bubbleSort( a ); //sort the array into ascending numbers
//the array is sorted so read array back into the buffer
for ( int i = 0; i < a.length; i++ ){
buffer.append( a[ i ] );
buffer.append( "|" ) ;
}//end of while st.hasMoreTokens
//then write out the record from the stringBuffer
pw.println( buffer );
line = br.readLine();
}//end of while != null
br.close();
pw.close();
}//end of static main
// sort the elements of an array with bubble sort
public void bubbleSort( int b[] )
int swapMade = 0; //if after one pass, no swaps were made - exit
for ( int pass = 1; pass < ( b.length - pass) ; pass++ ) // passes reduced for speed
for ( int i = 0; i < b.length - 1; i++ ) // one pass
if ( b[ i ] > b[ i + 1 ] ) // one comparison
swap( b, i, i + 1 ); // one swap
swapMade = 1;
} // end of if
} //end of one pass
if (swapMade == 0) pass = 7; //no swaps, so break out of outter for loop
}//end of passes, end of outter for loop
}//end of bubblesort method
// swap two elements of an array
public void swap( int c[], int first, int second )
int hold; // temporary holding area for swap
hold = c[ first ];
c[ first ] = c[ second ];
c[ second ] = hold;
} //end of swap
}//end of class SortNumbersStatic means
when u run the program (a class), there is only one variabel / type in memory.
ex static int a; //assume it's inside the aStaticClass
mean no wonder how many u create object from this class, variabel a only have 1 in memory. so if u change a (ex a=1;) all instance of this aStaticClass will effected (because they share the same variabel).
Try to read more at :
http://java.sun.com/docs/books/tutorial/java/javaOO/classvars.html
I hope this will help you....happy new year
yonscun -
Hey, I know you guys have probably seen a lot of these, but its for an assignment and I need some help. The error I'm getting is: non-static method printHistory() cannot be referenced from a static context. Here are the classes effected
public class BankAccount {
private static int nextAccountNumber = 1000;
//used to generate account numbers
private String owner; //name of person who owns the account
private int accountNumber; //a valid and unique account number;
private double balance; //amount of money in the account
private TransactionHistory transactions; //collection of past transactions
private Transaction transaction;
//constructor
public BankAccount(String anOwnerName){
owner = anOwnerName;
accountNumber = nextAccountNumber++;
balance = 0.0;
transactions = new TransactionHistory();
//public String getOwner() {
public void deposit(double anAmount ){
balance=balance+anAmount;
transaction=new Transaction(TransactionType.DEPOSIT,accountNumber,anAmount,balance);
transactions.add(transaction);
//public void withdraw(double anAmount){
//public String toString() {
***public void printHistory(){
TransactionHistory.printHistory();
AND
public class TransactionHistory {
final static int CAPACITY = 6; //maximum number of transactions that can be remembered
//intentionally set low to make testing easier
private Transaction[] transactions = new Transaction[CAPACITY];
//array to store transaction objects
private int size = 0;
//the number of actual Transaction objects in the collection
public void add(Transaction aTransaction){
if (size>5){
transactions[0]=transactions[1];
transactions[1]=transactions[2];
transactions[2]=transactions[3];
transactions[3]=transactions[4];
transactions[4]=transactions[5];
transactions[5]=aTransaction;
transactions[size]=aTransaction;
size=size++;
public int size() {
return size;
***public void printHistory() {
for(int i=0;i<6;i++){
System.out.println(transactions);
//public void printHistory(int n){
The project still isn't finished, so thats why some code is commented out. The line with *** infront on it are the methods directly effected, I think. Any help would be great.In Java, static means "something pertaining to an object class". Often, the term class is substituted for static, as in "class method" or "class variable." Non-static, on the other hand, means "something pertaining to an actual instance of an object. Similarly, the term +instance+ is often substituted for +non-static+, as in "instance method" or "instance variable."
The error comes about because static members (methods, variables, classes, etc.) don't require an instance of the object to be accessed; they belong to the class. But a non-static member belongs to an instance -- an individual object. There's no way in a static context to know which instance's variable to use or method to call. Indeed, there may not be any instances at all! Thus, the compiler happily tells you that you can't access an instance member (non-static) from a class context (static).
~ -
Non-static method getRealPath cannot be referenced from a static context
Hi, I'm fairly new to java and servlets, I get the following error referencing the line denoted in the code snippet with a ">>" I don't understand why I am getting this error message?
Message: non-static method getRealPath(java.lang.String) cannot be referenced from a static context
public class events extends HttpServlet implements SingleThreadModel {
private static final String CONTENT_TYPE = "text/html";
//Initialize global variables
public Document xmlDocument;
public HttpSession theSession;
public RequestDispatcher pageInit;
public RequestDispatcher pageHeader;
public RequestDispatcher pageFooter;
public String path;
public void setPath(){
path = getServletContext.getRealPath( "/" ); }
public void init() throws ServletException {
}Ok More Code, I am weary of posting too much? I don't know why come to think of it?
package altitude;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import org.jdom.*;
import altitude.sysVar;
public class events extends HttpServlet implements SingleThreadModel {
private static final String CONTENT_TYPE = "text/html";
//Initialize global variables
public Document xmlDocument;
public HttpSession theSession;
public RequestDispatcher pageInit;
public RequestDispatcher pageHeader;
public RequestDispatcher pageFooter;
public String path;
public void getRealPath(){
path = ServletContext.getRealPath( "/" );
public void init() throws ServletException {
//Process the HTTP Get request
public void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {
//Initialise some Global Variables
theSession = request.getSession( true );
doPage( request, response );
//Process the HTTP Post request
public void doPost( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {
//Initialise some Global Variables
theSession = request.getSession( true );
doPage( request, response );
public void doPage( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {
//Initialise the variables and get the parameters from the query string.
String eventID = request.getParameter( "eventID" );
String dateFrom = request.getParameter( "dateFrom" );
String dateTo = request.getParameter( "dateTo" );
theSession.setAttribute( "Page Title", sysVar.servletTitle_events);
Calendar theCalendar = Calendar.getInstance();
RequestDispatcher pageInit = request.getRequestDispatcher( sysVar.servlet_initSession );
pageInit.include( request, response );
RequestDispatcher pageHeader = request.getRequestDispatcher( theSession.getAttribute( "Skin Directory" ) + sysVar.page_header );
RequestDispatcher pageBody = request.getRequestDispatcher( sysVar.servletJsp_events );
RequestDispatcher pageFooter = request.getRequestDispatcher( theSession.getAttribute( "Skin Directory" ) + sysVar.page_footer );
//Initailize the site for this visitor this sets up the skin, and any customisations that may exist.
//load variables, objects in to the session
theSession.setAttribute( "Xml Document Object", path + sysVar.data_events );
pageHeader.include( request, response );
pageBody.include( request, response );
pageFooter.include( request, response );
//remove the variables and the objects from the session
theSession.setAttribute( "Xml Document Object", "" );
//Clean up resources
public void destroy() {
} -
Non-static method getIDnumber() cannot be referenced from a static context
Student.java
public class Student
private int IDnumber;
private int hours;
private int points;
public Student()
IDnumber = 9999;
points = 12;
hours = 3;
public void setIDnumber(int number)
IDnumber = number;
public int getIDnumber()
return IDnumber;
public void setHours(int number)
hours = number;
public int getHours()
return hours;
public void setPoints(int number)
points = number;
public int getPoints()
return points;
public void showIDnumber()
System.out.println("ID Number is " + IDnumber);
public void showHours()
System.out.println("Credit Hours are " + hours);
public void showPoints()
System.out.println("Points Earned are " + points);
public double getGradePoint()
return (double) (points / hours);
ShowStudent.java
public class ShowStudent
public static void main(String[] args)
Student learner = new Student();
int IDnumber;
int points;
int hours;
IDnumber = Student.getIDnumber();
points = Student.getPoints();
hours = Student.getHours();
System.out.println("ID number is " + IDnumber);
System.out.println("Hours are " + hours);
System.out.println("Points are " + points);
Here I get the following. How do I fix this? Thanks.
ShowStudent.java:9: non-static method getIDnumber() cannot be referenced from a
static context
IDnumber = Student.getIDnumber();
^
ShowStudent.java:10: non-static method getPoints() cannot be referenced from a
static context
points = Student.getPoints();
^
ShowStudent.java:11: non-static method getHours() cannot be referenced from a s
tatic context
hours = Student.getHours();
^
3 errorsYou have to get the ID number of a particular instance i.e. IDnumber = learner.getIDnumber();
-
Non-static method getPerimeter() cannot be referenced from a static context
I am getting this error message. I assume it is because getArea( ) and getPerimeter( ) are nonstatic and main is static? Can somebody help me? Thanks in advance!
Error messages:
non-static method getArea() cannot be referenced from a static context
System.out.println("\nArea: " + onePlace.format(getArea()));
non-static method getPerimeter() cannot be referenced from a static context
System.out.println("Perimeter: " + onePlace.format(getPerimeter()));
import java.util.Scanner;
import java.text.DecimalFormat;
public class Rectangle
public double length;
public double width;
public Rectangle()
length = 0;
width = 0;
public double getLength()
return length;
public double getWidth()
return width;
public void setLength(double length)
this.length = length;
public void setWidth(double width)
this.width = width;
public double getArea()
return (length * width);
/* public double area(Rectangle R)
double area = length * width;
return area;
public double getPerimeter()
return ((length * 2) + (width * 2));
/* public double perimeter(Rectangle R)
double perimeter = (length * 2) + (width * 2);
return perimeter;
/* public String toString()
double area = 0;
double perimeter = 0;
return "Area: " + area + "\tPerimeter: " + perimeter;
public static void main(String [] args)
DecimalFormat onePlace = new DecimalFormat("#0.0");
Rectangle R = new Rectangle();
Rectangle L = new Rectangle();
Rectangle W = new Rectangle();
Scanner input = new Scanner(System.in);
System.out.println("Enter length of rectangle: ");
L.setLength(input.nextDouble());
System.out.println("\nEnter width of rectangle: ");
W.setWidth(input.nextDouble());
System.out.println("\nArea: " + onePlace.format(getArea()));
System.out.println("Perimeter: " + onePlace.format(getPerimeter()));
// System.out.println(R.toString());
}For some reason, something isn't being read.
This is what I get:
Enter length of rectangle:
2
Enter width of rectangle:
4
Area: 0.0
Perimeter: 0.0
Press any key to continue . . .
Is it what I have to scan the input (L.setLength...)?
public static void main(String [] args)
DecimalFormat onePlace = new DecimalFormat("#0.0");
Rectangle R = new Rectangle();
Rectangle L = new Rectangle();
Rectangle W = new Rectangle();
Scanner input = new Scanner(System.in);
System.out.println("Enter length of rectangle: ");
L.setLength(input.nextDouble());
System.out.println("\nEnter width of rectangle: ");
W.setWidth(input.nextDouble());
System.out.println("\nArea: " + onePlace.format(R.getArea()));
System.out.println("Perimeter: " + onePlace.format(R.getPerimeter()));
// System.out.println(R.toString());
} -
Non-static method close() cannot be referenced from a static context
Friends,
I am having a little help with some static and not static issues.
I created a JMenuBar, it's in the file: SlideViewMenu.java
One of the operations is File->Close and another is File->Exit.
The listener is in the SlideViewMenu.java file. The listener needs to reference two non-static methods within SlideView.java.
Here's some of the code:
SlideViewMenu.java
public class SlideViewMenu {
public JMenuBar createMenuBar() {
final Action openAction = new OpenAction();
Action aboutAction = new AboutAction();
ActionListener menuListener = new MenuActionListener();
JMenuBar menuBar = new JMenuBar();
// All the menu stuff works fine and is taken care of here.
// Listener for Menu
class MenuActionListener implements ActionListener {
public void actionPerformed (ActionEvent actionEvent) {
String selection = (String)actionEvent.getActionCommand();
if (selection.equals("Close"))
SlideViewFrame.close();
else SlideViewFrame.exit();
}SlideView.java
// Driver class
public class SlideView {
public static void main(String[] args) {
ExitableJFrame f = new SlideViewFrame("SlideView");
// Stuff here, works fine.
// Frame class
class SlideViewFrame extends ExitableJFrame {
// some things here, work fine.
private SlideViewMenu menuBar = new SlideViewMenu();
public SlideViewFrame(String title) {
// Set title, layout, and background color
super(title);
setJMenuBar(menuBar.createMenuBar());
// Stuff here works fine.
// Handles doing stuff once the file has been selected
public void setFileName(File fullFileName, String simpleName) {
// Stuff here works fine.
// File->Close. clean up everything.
public void close() {
setTitle("SlideView");
textArea.setText("");
scrollBar.setVisible(false);
textArea.setVisible(false);
statsPanel.setVisible(false);
// File->Exit.
public void exit() {
System.exit(0);
}The error I'm getting is:
SlideViewMenu.java:50: non-static method close() cannot be referenced from a static context
I don't get it?
Thanks for all help.Making close() and exit() static would not solve the problem because close() requires access to nonstatic member variables/functions.
Fortunately, that is not necessary. The real reason you are having a problem is that you don't have any way in your listener to access the main frame window, which is what the listener trying to control. You made a stab at gaining access by prefixing the function with the class name, but, as the compiler has informed you, that is only valid for static methods. If you think about it, you should see the sense in that, because, what if you had a number of frames and you executed className.close()? Which one would you close? All of them?
Fortunately, there is an easy way out that ties the listener to the frame.
SlideViewMenu.java:public class SlideViewMenu
// Here's where we keep the link to the parent.
private SlideViewFrame parentFrame;
// Here's where we link to the parent.
public JMenuBar createMenuBar(SlideViewFrame linkParentFrame)
parentFrame = linkParentFrame;
final Action openAction = new OpenAction();
Action aboutAction = new AboutAction();
ActionListener menuListener = new MenuActionListener();
JMenuBar menuBar = new JMenuBar();
// All the menu stuff works fine and is taken care of here.
// Listener for Menu --- It is assumed that this is a non-static nested
// class in SlideViewMenu. All SlideViewMenu variables are accessible from
// here. If this is not the case, simply add a similar member variable
// to this class, initialize it with a constructor parameter, and
// pass the SlideViewMenu parentFrame when the listener is
// constructed.
class MenuActionListener implements ActionListener
public void actionPerformed (ActionEvent actionEvent)
String selection = (String)actionEvent.getActionCommand();
// Use parentFrame instead of class name.
if (selection.equals("Close"))
parentFrame.close();
else
parentFrame.exit();
}SlideView.java// Driver class
public class SlideView
public static void main(String[] args)
ExitableJFrame f = new SlideViewFrame("SlideView");
// Stuff here, works fine.
// Frame class
class SlideViewFrame extends ExitableJFrame
// some things here, work fine.
private SlideViewMenu menuBar = new SlideViewMenu();
public SlideViewFrame(String title)
// Set title, layout, and background color
super(title);
//Here's where we set up the link.
setJMenuBar(menuBar.createMenuBar(this));
// Stuff here works fine.
// Handles doing stuff once the file has been selected
public void setFileName(File fullFileName, String simpleName)
// Stuff here works fine.
// File->Close. clean up everything.
public void close()
setTitle("SlideView");
textArea.setText("");
scrollBar.setVisible(false);
textArea.setVisible(false);
statsPanel.setVisible(false);
// File->Exit.
public void exit()
System.exit(0);
} -
Non-static method cannot be referenced from a static context
Hey
Im not the best java programmer, im trying to teach myself, im writing a program with the code below.
iv run into a problem, i want to call the readFile method but i cant call a non static method from a static context can anyone help?
import java.io.*;
import java.util.*;
public class Trent
String processArray[][]=new String[20][2];
public static void main(String args[])
String fName;
System.out.print("Enter File Name:");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
fName="0";
while (fName=="0"){
try {
fName = br.readLine();
System.out.println(fName);
readFile(fName);
catch (IOException ioe)
System.out.println("IO error trying to read File Name");
System.exit(1);
public void readFile(String fiName) throws IOException {
File inputFile = new File(fiName); //open file for reading
FileReader in = new FileReader(inputFile); //
BufferedReader br = new BufferedReader(
new FileReader(inputFile));
String first=br.readLine();
System.out.println(first);
StringTokenizer st = new StringTokenizer(first);
while (st.hasMoreTokens()) {
String dat1=st.nextToken();
int y=0;
for (int x=0;x<=3;){
processArray[y][x] = dat1;
System.out.println(y + x + "==" + processArray[y][x]);
x++;
}Hi am getting the same error in my jsp page:
Hi,
my adduser.jsp page consist of form with field username,groupid like.
I am forwarding this page to insertuser.jsp. my aim is that when I submit adduser.jsp page then the field filled in form should insert into the usertable.The insertuser.jsp is like:
<% String USERID=request.getParameter("id");
String NAME=request.getParameter("name");
String GROUPID=request.getParameter("group");
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mynewdatabase","root", "root123");
PreparedStatement st;
st = con.prepareStatement("Insert into user values (1,2,4)");
st.setString(1,USERID);
st.setString(2,GROUPID);
st.setString(4,NAME);
// PreparedStatement.executeUpdate();//
}catch(Exception ex){
System.out.println("Illegal operation");
%>
But showing error at the marked lines lines as:non static method executeupdate can not be referenced from static context.
Really Speaking I am newbie in this java world.
whether you have any other solution for above issue?
waiting Your valuable suggestion.
Thanks and regards
haresh -
What does this mean. I know about static, but I don't understand why I get this so many times.
I try to do something pretty normal and this is what I get a lot of times. I mean: the main() method should be static right? Then what good is the main() method if you cannot let it do stuff for you like this:
public class Test extends JFrame
public Test
setSize( 100, 100 );
show();
public static main( String args[] )
Test window = new Test();
draw();
public void draw()
blablabla whatever I want to do, a lot of times I can't.....
}Why is this, what is the reason for Java to forbid this and what can I do about it?Your draw() method, since it isn't defined as static is considered by Java to be part of your Test object; hence, it can only be invoked in the context of an existing instance of your object. In other words, any Java program that wanted to use your draw() method would have to create an instance of your Test class using something likemyTest = new Test()Your main method, however, is something different. Since you want to execute your class as a program, the Java run-time environment needs to have standard starting point. This starting point is the main method. The problem is that the main method must be static, because the run-time environment cannot be expected to know beforehand the correct way to create an instance of your class so that non-static methods can be invoked. The drawback is that your main method can only directly access methods that are defined as static.
There are two possible solutions to this problem, and which of the two you want to use depends on the object-oriented nature of your program.
On the one hand, if your draw() method is closely tied to the object itself, if the draw() method is actually drawing your object or a part of it, it should be left as an instance method, and you should simpy use the instance of the object you created in your main method:public static main( String args[] )
Test window = new Test();
// maybe some code to generate something to draw???
window.draw();
}This is what I think you are trying to do.
On the other hand, if your draw() method was some kind of universal method that didn't depend in any way on the current configuration of your instance, you could simply define draw() as static at which point your main method (or a method in an external class) could invoke it directly, without a corresponding instance. But if you did that, the draw() method itself would only be able to access static variables and methods.
Doug -
Non-static method rff() cannot be referenced from a static context
I get the above error when compiling my program, can anybody see what the problem is and how to fix it? its at the readstr = rff(); part after the if (i==2)
import java.io.*;
import java.util.Vector;
public class PropertyRental
public static Vector v = new Vector();
public static String menu;
public static String pc, hn, mr, ua, readstr;
public static int i, ln;
public static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
public String rff()
String line="";
String data="";
try
BufferedReader br = new BufferedReader(new FileReader("properties.txt"));
line = br.readLine();
do// EOF condition
System.out.println(line);
data = data + " \n" + line;
//line = br.readLine();
while( (line=br.readLine()) != null);
catch(IOException ioe)
return data;
public static void main()
try
do
System.out.println("Welcome to your local Property Rental Company");
System.out.println("You now have the following options");
System.out.println("");
System.out.println("1. Add a Property");
System.out.println("2. Remove a Property");
System.out.println("3. Display all Properties");
System.out.println("4. Exit the Program");
System.out.println("");
i = Double.valueOf(br.readLine()).intValue();
System.out.println("");
if(i == 1)
//BufferedWriter appends to properties.txt
//Our user input buffer
BufferedReader user = new BufferedReader(new InputStreamReader(System.in));
System.out.println("--- Add a Property ---");
//User enters address
System.out.println("\nEnter postcode (Must be less than 16 characters)");
pc = user.readLine();
//If the user has entered 'q' to quit, leave this loop
System.out.println("Enter house number");
hn = user.readLine();
System.out.println("Enter monthly rent");
mr = user.readLine();
//Write our details to file
v.addElement(new PropertyToLet(pc, hn, mr));
PrintWriter outFile;
try
outFile = new PrintWriter(new FileWriter("properties.txt" ,true));
PropertyToLet obj = (PropertyToLet) (v.lastElement());
outFile.println(obj.getpc() + "," + obj.gethn() + "," + obj.getmr());
outFile.close();
catch(IOException IOE)
System.err.println(IOE + "Has occured");
if(i == 2)
try
readstr = rff();
String[] splitArray = null;
splitArray = readstr.split(",");
for(int i=0;i<splitArray.length;i++)
if (v.size()<splitArray.length)
v.addElement(new PropertyToLet(splitArray[0], splitArray[1], splitArray[2])) ;
System.out.println("\nEnter the line number of the property you wish to remove");
int ln = Double.valueOf(br.readLine()).intValue();
v.removeElementAt(ln-1);
PrintWriter outFile = new PrintWriter(new FileWriter("properties.txt"));
for (int i=0; i<v.size(); i++)
PropertyToLet obj = (PropertyToLet) (v.lastElement());
outFile.println(obj.getpc() + "," + obj.gethn() + "," + obj.getmr());
outFile.close();
catch(Exception ex)
ex.printStackTrace();
if(i == 3)
String line="";
String data="";
try
BufferedReader br = new BufferedReader(new FileReader("properties.txt"));
line = br.readLine();
int counter=0;
do// EOF condition
counter++;
System.out.println(counter + ": " + line);
data = data + " \n" + line;
//line = br.readLine();
while( (line=br.readLine()) != null);
catch(IOException ioe)
if(i == 4)
//A simple instruction that tells the user how to exit the program
System.out.println("Press the 'x' button in the corner of the window to quit");
System.out.println("Do you want to exit [y/n]");
ua = br.readLine();
}while(ua.equals ("n"));
catch(IOException ioe)
}Edited by: Atomika3000 on Apr 23, 2009 4:09 AMYou must add modifier method to be static because you access the method from the main method which is a static method
public static String rff(){
// code
} I hope it helps you, good luck. -
Non-static variable this cannot be referenced from a static context
public static File saveFile()
JFileChooser saving = new JFileChooser();
saving.setSelectedFile(new File(""));
int returnVal = saving.showSaveDialog(AccountTest.this);
if(returnVal == JFileChooser.APPROVE_OPTION)
File file = saving.getSelectedFile();
saveAccount(file.getParent() + "\\" + file.getName() + ".bpa");
System.out.println(file.getParent()+ "\\" + file.getName() + ".bpa");
return null;
}after compiling my program, it complains that the line int returnVal = saving.showSaveDialog(AccountTest.this); is giving me the problem. what am i doing wrong? any help is appreciated. thank you in advance
hristoHristo wrote:
what does that mean?You apparently wrote this line of codeint returnVal = saving.showSaveDialog(AccountTest.this);What did you intend the line to do? What did you intend AccountTest.this to represent?
As the previous post stated, your method is static so you can not use 'this' inside the method.
I am guessing, but perhaps you will get desired results if you just put 'null' in place of 'this' -
Non-static variable cannot be referenced from a static context
I got a problem here. I tried to put a constructor as private when i don't want the object to instantiate. But I got another problem. When I want to use a method for adding an object into the array list, it comes out as the above subject. This is the code that I tried writing out.
public class DegreesCollection{
private DegreesCollection()
DegreesCollection dc = new DegreesCollection();
ArrayList degreeList = new ArrayList();
public static void addDegree(Degree deg){
The DegreesCollection is the one that is not supposed to be instantiated.
It acts as a storage of all degrees.
An array list is created to put any new degrees in it. But the error is the one on the subject line. What should i do now?import java.util.ArrayList;
import java.util.List;
public class DegreeTest {
public static void main(String[] args) {
for(int j = 0; j < 5; j++) {
Degree degree = new Degree(String.valueOf(j + 1));
DegreesCollection.addDegree(degree);
List list = DegreesCollection.getDegrees();
for(int j = 0; j < list.size(); j++) {
Degree degree = (Degree)list.get(j);
System.out.println(degree.degree);
class Degree {
String degree;
Degree(String d) {
degree = d;
class DegreesCollection{
private DegreesCollection()
DegreesCollection dc = new DegreesCollection();
static ArrayList degreeList = new ArrayList();
public static void addDegree(Degree deg){
degreeList.add(deg);
public static List getDegrees() {
return (ArrayList)degreeList.clone();
}
Maybe you are looking for
-
MacBook Pro Freezing After Screen Replacement
I recently took my MBP in to get the screen replaced due to a screen separation issue. When I got it back it froze every now and then, but it kept continuing. Everytime I restart the computer after a freeze it will freeze up sooner and sooner. At fir
-
wife has bought a new iPhone and when i tried to set up an iTunes account up for her it won't let me , has a error message saying her email address is associated with my account, also all my contact numbers have merged in with hers on my phone not he
-
IPod Shuffle (1st Generation) NEW ERROR: recognize and charging problems
I'm tired. I'm quite tired. I struggled for a month to resolve the 1418 error (My previous posts had thousand of views, until Apple removed them...).Finally Apple gave us the iPod Shuffle reset utility, which worked fine... My iPod Shuffle resurrecte
-
DVD Player Not Working - Need Help Please!
My eMac is currently not reading DVDs. The drive will recognize and automatically play commercial music CDs and software, as well as burned music CDs. However, when a commercial DVD is inserted into a drive, not only will the DVD player not recognize
-
Zalman CNPS-7000-CU HSF on K6T-delta board
Is anyone running a zalman-7000-CU heatsink with a 92mm fan on the K6T-Delta boards. When you check the compatability chart on the zalman website they don't list it as compatable. but they do mention it can be used on socket A(462) systems. Just won