Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 2
Регистрация: 21.01.2013
Сообщений: 12
1

Почему такой результат?

21.01.2013, 22:28. Показов 995. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
public class Ref
{
public static void main(String[] args)
{
int m = 5;
int n = 6;
System.out.println("M=" + m + " N=" + n);
swap(m, n);
System.out.println("M=" + m + " N=" + n);
}
private static void swap(int a, int b)
{
int c = a;
a = b;
b = c;
}

}
Выводит: М=5 N=6 и так оба раза, почему не переопределяются переменные во втором выводе?
Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.01.2013, 22:28
Ответы с готовыми решениями:

Почему такой результат
int x = 90; x &= 50; Console.WriteLine(x); Объясните пожалуйста почему...

Почему выдает такой результат?
#include <stdio.h> #include <stdlib.h> #include <locale.h> #include <math.h.> #include <time.h>...

Почему результат byte такой?
Вот код: int i = -4; byte j = 4; int a = (int)j; //преобразование без потери точности ...

Почему выдает такой результат?
#include <iostream> #include <conio.h> using namespace std; class X { int a; ...

4
63 / 63 / 12
Регистрация: 29.08.2012
Сообщений: 152
21.01.2013, 23:19 2
Как на выводе что то поменяется, если ты присваиваешь значение новым переменным, а выводишь совершенно другие?
Либо присваивай значение своим m и n, либо выводи a и b в теле метода
0
0 / 0 / 2
Регистрация: 21.01.2013
Сообщений: 12
21.01.2013, 23:23  [ТС] 3
Но я же вызвал там метод swap(m, n) посредине для того чтобы поменять местами m и n.
0
63 / 63 / 12
Регистрация: 29.08.2012
Сообщений: 152
21.01.2013, 23:37 4
Все правильно, но только этого не происходит, потому что ты присваиваешь передаваемые значения переменной a и b, а должен m и n.
Java
1
2
3
4
5
6
7
8
swap(m, n); // вызвал метод и передал значения
private static void swap(int a, int b)
{
int c = a;
a = b; // присваиваешь значение переменной, которую ты не выводишь. Нужно m = b
b = c; // аналогично n = a
}
System.out.println("M=" + m + " N=" + n);
Только теперь m и n нужно сделать видимыми внутри класса. Объяви их вне метода main

Добавлено через 6 минут
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class Ref{
    
        int m = 5;
        int n = 6;
        
    public static void main(String[] args) {
        Ref r = new Ref();
    }
    
    public Ref(){
        System.out.println("M=" + m + " N=" + n);
        swap(m, n);
        System.out.println("M=" + m + " N=" + n);
    }
    
    private void swap(int a, int b) {
        int c = a;
        m = b;
        n = c;
    }
}
1
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
22.01.2013, 18:55 5
Цитата Сообщение от piuuu Посмотреть сообщение
Но я же вызвал там метод swap(m, n) посредине для того чтобы поменять местами m и n.
При передаче примитивов в метод их значения копируются в стек. Вот в стеке Вы их местами и меняете. А вовне метода как они были - так и остались.
1
22.01.2013, 18:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.01.2013, 18:55
Помогаю со студенческими работами здесь

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

Почему программа выдает такой результат
Всем привет. У меня в голове образовалась каша с полиморфизмом. Вот такой код: class A { ...

Почему такой результат работы функции?
#include "pch.h" #include <iostream> int main() { int age; double weight; std::cout <<...

Почему код с делегатами дает такой результат?
Уважаемые программисты !!!!!!! есть следующий код: List<Action> actions = new List<Action>();...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru