2014-12-08 7 views
-3

В моем коде на последней строке действующего кода есть ошибка.Java - Ошибка в моем коде?

package Class; 

import java.util.Scanner; 

public class Bicycle 
{  
    public int units; 
    public int courseNum; 
    public String courseName; 

    public Bicycle(int startUnits, int startNum, String startName) 
    { 
     units = startUnits; 
     courseNum = startNum; 
     courseName = startName; 
    } 

    public int setUnits(int newValue) 
    { 
     units = newValue; 
     return units; 
    } 

    public int setNum(int newValue) 
    { 
     courseNum = newValue; 
     return courseNum; 
    } 

    public String setName(String newValue) 
    { 
     courseName = newValue; 
     return courseName; 
    } 

    public class subClass extends Bicycle 
    { 
     public int randVariable; 

     public subClass(int startUnits, int startNum, String startName) 
     { 
      super(startUnits, startNum, startName); 
     } 

     public void randVariable(int newValue) 
     { 
      randVariable = newValue; 
     } 
    } 

    public static void main(String args[]) 
    { 
     int BaseUnits; 
     int BaseCourseNum; 
     String BaseCourseName; 

     int FinalUnits; 
     int FinalcourseNum; 
     String FinalcourseName; 

     Scanner entries = new Scanner(System.in); 

     BaseUnits = entries.nextInt(); 
     BaseCourseNum = entries.nextInt(); 
     BaseCourseName = entries.nextLine(); 

     FinalUnits = setUnits(BaseUnits); 
    } 
} 

Ошибка указывает, что я не могу ссылаться на нестатический метод из статического контекста.

Итак, я затем начал искать вопросы о Stack о статических и нестатических методах, но ответы все были довольно запутанными - возможно, из-за того, что я новичок в программировании.

+0

Какая ошибка вы получаете? –

+1

Он заявил об ошибке ... «Ошибка указывает, что я не могу ссылаться на нестатический метод из статического контекста». – VMoza

+2

Читайте о модификаторе 'static' в базовом учебнике по Java. –

ответ

0

Вы получаете доступ к нестационарному методу в статическом методе.

см. Ваш public int setUnits(int newValue); этот не статический метод. вы не можете получить доступ к нему в статическом методе, как ваш главный public static void main(String[] args);

вы можете получить доступ к нему через создание нового экземпляра этого класса

Это один может/должен решить вашу проблему.

Создать новый экземпляр этого класса на основной метод :)

Bicycle bike = new Bicycle(); 
    bike.setUnits(someValue); //this is your setUnits method. 

или сделать свой setUnit статический метод.

public static int setUnits(int someValue); 

, объявляя какой-либо метод или переменную экземпляра статическим, это означает, что это уровень класса или принадлежит этому классу.

try to look at this. или

this one :)

+0

Как я могу это исправить? – CoolKat

+0

статический setUnit() завершится с ошибкой, поскольку элементы-члены не статичны и, вероятно, не должны быть статическими. – WarrenFaith

+0

@WarrenFaith thats, почему у меня есть два варианта его до него, что он будет использовать :) – Secondo

-1

Просто сделайте ваш метод setUnits статичны, а также переменная единицы.

+0

Это создаст ту же самую точную ошибку. – August

+0

Тогда я ничего не могу вернуть ... – CoolKat

+0

и переменные «единицы», а? – WarrenFaith

Смежные вопросы