2014-01-25 4 views
-1

Мне нужна помощь с моей программой. Мне нужно использовать переменные «три», «четыре» в двух(), но я не знаю, как это сделать. Пожалуйста, помогите.Как использовать переменные в других функциях

public class Main { 

public static void main(String[] args) { 
    one() 
} 

public static void one(){ 
    Integer three; 
    Integer four; 
    Integer five; 
    three = 3; 
    four = 4; 
    two(); 


} 
public static void two(){ 
    five = three + four; 
    System.out.println(five); 
} 



} 
+0

, как вы определили их, они являются локальными только метода вы объявляете их в Declare. они как переменные класса, вне любого метода, то вы можете создавать экземпляры или устанавливать их значения внутри метода. – csmckelvey

+0

объявить переменную как переменную класса. затем создайте объект своего класса и вызовите их. снова понять базовый класс, объект, функцию сначала. –

+0

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/variables.html – Radiodef

ответ

1

сделать их переменные класса, поэтому вывести их за пределы ваших методов:

static Integer three; 
static Integer four; 
static Integer five; 

public static void one(){ 
    three = 3; 
    four = 4; 
    two();  
} 

И изменить one() к one();


Или вы могли бы сделать их параметры для вашего метода two():

public static void one(){ 
    Integer three; 
    Integer four; 
    three = 3; 
    four = 4; 
    two(three, four); // add parameters here 
} 
public static void two(Integer three, Integer four){ 
    Integer five; // declare five here 
    five = three + four; 
    System.out.println(five); 
} 
+0

Спасибо, но затем я получаю сообщение об ошибке: – bigfatlemon

+0

Невозможно сделать статическую ссылку на нестатические поля три Невозможно сделать статическая ссылка на нестатическое поле четыре – bigfatlemon

+0

@bigfatlemon посмотреть мой обновленный код. Я изменил их на статические переменные. –

1

«Мне нужно использовать переменные« три »,« четыре »в двух(), но я не знаю, как это сделать. "

Передайте их в качестве аргументов метода

public static void two(Integer four, Integer three){ 
    int five = three + four; 
    System.out.println(five); 
} 

Называйте это как этот

two(four, three); 

public class Main { 

    public static void main(String[] args) { 
     one(); 
    } 

    public static void one() { 
     Integer three; 
     Integer four; 
     three = 3; 
     four = 4; 
     two(four, three); 

    } 

    public static void two(Integer four, Integer three) { 
     int five = three + four; 
     System.out.println(five); 
    } 
} 

ВЫВОД: 7

+0

Почему пустые голоса? Оно работает –

1

Вы можете попробовать объявить их как поля в классе:

public class Main { 
    private static int three; 
    private static int four; 
    private static int five; 
    ... 
} 

, если вы сделаете это, вы не должны объявить их снова в методе:

public static void one(){ 
    three = 3; 
    four = 4; 
    five = two(); 
} 

или вы может попытаться передать их в качестве аргументов two() метода и возвращает значение:

public static void two(int three, int four){ 
    return three + four; 
} 

, то в one() метода:

public static void one(){ 
    Integer three; 
    Integer four; 
    Integer five; 
    three = 3; 
    four = 4; 
    five = two(three, four); // Assign the value returned by the 'two()' method 
} 

, как вы выбираете зависит от того, что вы пытаетесь сделать. Поэтому вам нужно выбрать тот, который лучше подходит вашему делу.

1

У вас есть два варианта.

  1. Объявить three и four как static на уровне класса, и пусть five будет возвращен результат two():

    public class Main { 
        static Integer three; 
        static Integer four; 
    
        // more code 
        public static void one() { 
         three = 3; 
         four = 4; 
         Integer five = two(); 
         System.out.println(five); 
        } 
    
        public static Integer two() { 
         return three + four; 
        } 
    } 
    
  2. Проходят переменные (и предпочтительно уронить объявления статической, заставляя вас к новому экземпляру вашего объекта для использования метода one()):

    public class Main { 
        public void one() { 
         Integer five = two(3, 4); 
         System.out.println(five); 
        } 
        public Integer two(Integer three, Integer four) { 
         return three + four; 
        } 
        public static void main(String[] args) { 
         new Main().one(); 
        } 
    } 
    
-6
class F1() { 
    int a; 
    int b; 
    void execute() { 
    a = 1; 
    b = 2; 
    two(this); 
    }; 
} 

void two(F1 f1) { 
    int c = f1.a + f1.b; 
} 

или переместить объявления локальных переменных в глобальном масштабе

static int a; 
void f1() {} 
void f2() {}; 
0

Вы probaly хотите:

public static void one(){ 
    int five = two(3,4); 
} 
public static int two(int three, int four){ 
    int five = three + four; 
    System.out.println(five); 
    return five; 
} 
Смежные вопросы