Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как передать параметры? Как передать параметры из метода? 
V
    Опции темы
BIV
Дата 28.2.2010, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 20.12.2007

Репутация: нет
Всего: 1



Всем доброе время суток!
У меня сложности с передачей параметров. Значит код такой:

Код

import java.awt.*;
public class Line extends Frame
{       
    int x,y,kx,ky;  
    int i;             int o=0;
    public void print()
    {
        Graphics g=getGraphics();         g.drawString("y="+y+" ky="+ky, 100, 100+10*o);
        g.setColor(new Color(255, 128, 0));             
          g.drawOval(x, y, 1, 1);
    }


    public void lin()
    {
        int v=ky-y; int u=kx-x;   int w=0;
        int b=v+v;  int a=u+u-b;  int r=0;      Graphics g=getGraphics();    g.drawString("y="+y+" ky="+ky, 100, 100+10*o);
        for(i=0;y<ky;i++)
        {                                     g.drawString("y="+y+" ky="+ky+" o="+o, 200, 100+10*o);
            v=ky-y; u=kx-x;   w=0;
            b=v+v;  a=u+u-b;  r=0;                    
            int d=2*v*(x+1)-2*u*y-u;
            for(;u>0;)
            {                                 
                         if(d<0) d=d+v+v;     
                else d=d-u-u+v+v;
                u--;
            };
            y=((int)v/u)*(x+1)-1-((int)d/u);
//                        for(r=0;d==2*v*(x+1)-2*u*r-u;r++);   g.drawString("x="+x+" ky="+ky, 100, 200);
//                        y=r;                             
                        print();    o++;
                        x++;
                };
            
             
    }

    public void paint(Graphics g)
    {
//____________________________________________________________________________
              x=100; y=300; kx=300; ky=200;
//____________________________________________________________________________


        lin();        g.drawString("y="+y+" ky="+ky, 100, 200+10*o);
//        print();      
    }


    public Line(String str)
    {
       super(str);
       setSize(600, 500);
       setVisible(true);     

    }
     public boolean handleEvent(Event e)
     {                       
      

         switch(e.id)
         {
              case Event.WINDOW_DESTROY:
                 dispose();
                 System.exit(0);
                 return true;
         }
         return super.handleEvent(e);
     }
    public static void main(String [] ar)
    {
        Line F=new Line("Пиксель");
                                     
    }
}



Мне нужно из метода public void lin() изменить все параметры над которыми я делаю расчет и передать изменения в метод print().
PM MAIL   Вверх
MaxPayneC
Дата 28.2.2010, 22:18 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 324
Регистрация: 18.2.2006

Репутация: 1
Всего: 9



Описать класс, содержащий параметры, и передавать его в метод, их вычисляющий, и метод, на их основе что-то рисующий.
PM   Вверх
BIV
Дата 2.3.2010, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 20.12.2007

Репутация: нет
Всего: 1



Не понял
PM MAIL   Вверх
Sibit
Дата 3.3.2010, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 6.10.2009
Где: NSK

Репутация: нет
Всего: 1



Что-то непонятный какой-то вопрос. У вас все действия в пределах одного класса - что мешает завести переменную и через нее передавать что вам нужно? или добавить к методам параметры?
PM MAIL   Вверх
BIV
Дата 3.3.2010, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 20.12.2007

Репутация: нет
Всего: 1



Ладно, проблему решил другим способом.
Но вопрос был в том, что при отправки переменных в метод, где делается расчет и выводит правильный результат, при возвращении обратно в класс, откуда был вызван тот метод, выводит старое значение
PM MAIL   Вверх
batigoal
Дата 4.3.2010, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 7
Всего: 151



BIV, переменные простых типов в Java передаются по значению, а не по ссылке, поэтому написав
Код

int a = 5;
call(a);

ты, по факту, делаешь вызов call(5), и что ты с этой пятеркой внутри метода не сделай - значение a не изменится. Чтобы вернуть новые значения, нужно либо обернуть параметры в класс:
Код
class Struct {
    int a, b;
}

call(Struct s) {
    s.a = 5;
    s.b = 6;
}


либо (что лучше, на мой взгляд) возвращать новый объект:
Код
class Struct {
    int a, b;
}

Struct call(...) {
    Struct res = new Struct(a, b);
    return res;
}


Ну или третий вариант - не передавать эти переменные в метод, а сделать их полями класса.

Это сообщение отредактировал(а) batigoal - 4.3.2010, 10:47


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
BIV
Дата 4.3.2010, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 20.12.2007

Репутация: нет
Всего: 1



batigoal, спасибо за подробное разъяснение!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0684 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.