Я перемещаю переменных в программе Яву

Я учусь программировать и у меня есть проблема во мне public static void main(String[] args) {... у меня есть переменная, которая внутри этой процедуры изменяет значения эту переменную, Вы нуждались в том, чтобы использовать ее в другом классе. Пример: переменная "c" нуждалась в том, чтобы занять в другом классе того же пакета

public class mishel {
    private static int c;

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int a, b;
        a=8;
        b=9;
        c=a+b;
        System.out.println(c);

    }
    public void set_c(int var1){ 
        this.c=var1; 
    } 

    public int getc(){ 
        return this.c; 
    } 

}

/////////////////////////////////////////////////////////

В моем другом классе я имею

public class programa {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        mishel c1=new mishel(); 
        c1.getc(); 
        int nc=c1.getc(); 
        int d = nc;
        System.out.println(d);

    }
}

Но Вы печатаете меня 0.

3
задан 20.10.2016, 16:02
3 ответа

Я не рекомендую писать твой код в функции main, сначала смоги казаться более легким, но привыкать к этому - плохой, из-за которого он поддерживает несколько ограничений (Как необходимость использовать переменные Static). Но это сейчас не является значимым, мы идем в тему, я сделал бы это таким:

public class MiClase {

    public int c;

    /*
     * Esto es un constructor, se le llama automaticamente cuando se crea un objeto.
     */
    public MiClase() {
        int a=8, b=9;
        c = a + b;
    }
}

Второй класс:

public class programa {
    public static void main(String[] args) {

        // Creo un objeto de nombre mc y tipo MiClase.
        MiClase mc = new MiClase();

        System.out.println(mc.c);
    }
}

Ключ здесь это эти две команды:

MiClase mc = new MiClase ();

Здесь то, что мы делаем, состоит в том, чтобы создавать объект так называемый "mc" типа MiClase. В этом случае, я создал публичную переменную типа int так называемая "c" в классе MiClase, с которым mc у него есть эта переменная.

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

mc.c

Когда я создал объект "mc", внутри была создана глобальная переменная "c", и чтобы соглашаться на Вашу стоимость (могут, так как она публичная), он используется mc.c, в моем примере то, что я делаю, состоит в том, чтобы писать это на экране, но возможно использовать, как он любил.

Если у тебя есть какое-то сомнение, пожалуйста, спроси. Мы будем довольными тем, что поможем.

Обновление: Getter и Сеттер:

Чтобы предотвращать проблемы с публичными переменными (Эти могут быть использованными с других классов, и это может приносить проблемы, если не убирает контроль в более сложных программах), используются частные переменные и функции "getter" и "сеттер" ты печатаешь. Главным образом, функции, которые sobreescriben они (сохраняют) или читают частную переменную. (Так как, если она лишена, он не может соглашаться на нее (читать NI писать) снаружи класса.

Это осталось бы таким:

public class MiClase {

    private int c;

    /*
     * Esto es un constructor, se le llama automaticamente cuando se crea un objeto.
     */
    public MiClase() {
        int a=8, b=9;
        c = a + b;
    }
    public int getC() {
        return c;
    }

    public void setC(int c) {
        this.c = c;
    }
}
1
ответ дан 24.11.2019, 13:01
  • 1
    мне нравится твой edit. и хотя с getter мне кажется более элегантным, очень действительный ответ, +1 – lois6b♦ 20.10.2016, 15:00
  • 2
    я прибавляюсь в @lois6b, если ты занимал get, и set был бы более чистым, но хорошим ответом! – sioesi 20.10.2016, 15:01
  • 3
    Спасибо за твое время и эта часть - entendidio хорошо, спасибо, но моя проблема состоит в том, что в функции main он там, где он меняет стоимость моей переменной, и я нуждаюсь в том, чтобы назвать этот vriable, который изменил в функции main мой другой класс не, если я объясняюсь хорошо – Mishel 20.10.2016, 15:02
  • 4
    Верный, getters и сеттеры - м и # 225; s чистые, и они не осложнены также. Прямо сейчас я это издаю. – Mayuso 20.10.2016, 15:02
  • 5
    @Mishel, но когда ты будешь верить в инстанцию класса, не работает main, так что стоимость C ты это не подбираешь. Или ты это делаешь в строителе, как он поместил Mayuso, или создаешь метод, который это вычислял бы, и это называешь вслед за инстанцией – lois6b♦ 20.10.2016, 15:03

Нормальное состоит в том, чтобы герметизировать в корпусе операции, которые нужно реализовывать, например используя класс, чтобы реализовывать эту сумму.

Код класс Программирует

Этот класс Программирует - та, которую приносит main, чтобы быть выполненной прямо.

package paqueteDePrueba;

public class Programa {

    public static void main(String[] args) {

        int a, b, c;
        a=8;
        b=9;

        ClaseSumadora cs = new ClaseSumadora();
        c =  cs.sumar(a,b);

        System.out.println(c);

        //si necesitaras usar 'c' en alguna otra clase
        NuevaClase miNuevaClase = new NuevaClase();
        miNuevaClase.hacerOperacionConElSumatorio(c);

        //o invocar un set
        //miNuevaClase.setSumatorio(c);

        //o construir la nueva clase empleando c
        //NuevaClase miNuevaClaseConstruidaConC = new NuevaClase(c);            
    }    
}

Код Суммирующий класс

Реализует Гєnicamente ее operaciГіn суммы.

public class ClaseSumadora{

    //obtiene la suma 'c'
    public int sumar(int a, int b){
        return a + b; 
    }
}
0
ответ дан 24.11.2019, 13:01

Это очень просто. Метод main класса mishel не работает. Метод main одинокий будет работать, если ты сделаешь run этот класс как приложение java.

Создав объект типа mishel с класса запрограммируй только работает строитель этого класса. Поскольку ты это не определил ясно, работает назначенный по умолчанию строитель, который пустой. поскольку c - примитивная переменная, Ваша стоимость равна 0, который является стоимостью, которая печатает тебя.

То, что ты был бы должен делать, состоит в том, чтобы создавать строитель для класса mishel и внутри копировать код метода main.

0
ответ дан 24.11.2019, 13:01