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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите правильно обьявить переменную 
:(
    Опции темы
Snik
Дата 13.2.2008, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Подскажите в чем ошибка ?

Код

import javax.swing.*;
import java.awt.event.*;
import java.awt.*; 
import java.awt.Graphics;
import java.applet.*;
import java.util.*;
import java.util.Random;


class L4{

public static void main(String args[])
{
  JFrame frame = new JFrame("ЛАБ №4"); 
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  
  final int jj = 0;//счетчик 
  final Klava kl[] = new Klava[100];
  
  JButton     btnNew    = new JButton(" Создать случайно объект ");
  final DefaultListModel lm = new DefaultListModel();
  final JList jlst = new JList(lm);
  jlst.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  final JLabel lblout = new JLabel("out print ");
  
   frame.getContentPane().add(btnNew);
   frame.getContentPane().add(jlst);
   frame.getContentPane().add(lblout);

   frame.getContentPane().setLayout(new FlowLayout());

   final String[]  A   = {"PC/2", "Usb", "Com", "Ultra", "USB2.0", "Bluetooth"};
   final int       B[] = {60, 48, 8, 70, 53, 4};
   final int       C[] = {300, 600, 400, 578, 770, 2000};
   final String[]  D   = {"100 грн.", "150 р.", "34 грн.", "120 usd", "300 р.", "60 грн."};
   final String[]  E   = {"logotech", "samsung", "jvc", "china", "japan", "sony"};

     btnNew.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent ae){
         Random rdn = new Random();
         int r0 = rdn.nextInt(6);  
         Klava el = new Klava(A[r0], B[r0], C[r0], D[r0], E[r0]);
         kl[jj] = el; 
         DefaultListModel lm = (DefaultListModel) jlst.getModel();
         lm.addElement(kl[jj].a);
         lblout.setText(kl[jj].Pechat());
        jj++;
       }
     });

  frame.setSize(1000,500);
  frame.setVisible(true);
    
}
 }

//Класс устройство
class Ustr { 
  String a;    
  int b, c; 
  void init(String a, int b, int c) { 
     this.a = a;
     this.b = b;
     this.c = c;
  } 

  String Pechat(){
    return "Инфо обьекта: \n"+"Вид устройства "+a+"  к-во клавиш "+b+" питание "+c+" V.";
  }
} 

//Класс клава свои методы d, e и  Pechat() 
class Klava extends Ustr { 
  String a;
  int b,c;
  String d, e; 
  Klava(String a, int b, int c,String d, String e) { 
    this.a = a; //вид
    this.b = b; //кво клавиш
    this.c = c; //питание
    this.d = d; //цена
    this.e = e; //производитель
  }
  String Pechat(){
      return "Объект: \n"+"Вид "+a+"  к-во клавиш "+b+"  питание "+c+" V."+"  цена "+d+" \n произв. "+e;
  }
}



C:\Program Files\Java\jdk1.6.0_03\bin>javac L4.java
L4.java:47: cannot assign a value to final variable jj
        jj++;
        ^
1 error

PM MAIL   Вверх
Kangaroo
Дата 13.2.2008, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


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

Репутация: 21
Всего: 104



Код

final int jj = 0;//счетчик 

Как все гениально и просто - счетчик сделать константой  smile 


Snik, 
может это и не мое дело, но советую учить Java'y не запуская примеры и спрашивая про ошибки в них на форуме, а читая книжки. ИМО


--------------------
Lost....
PM MAIL MSN   Вверх
Snik
Дата 13.2.2008, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



почему константой ? я подобным образом объявлял ранее работало , непойму , подскажите как правильно ?
PM MAIL   Вверх
Kangaroo
Дата 13.2.2008, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


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

Репутация: 21
Всего: 104



Цитата(Snik @  13.2.2008,  17:22 Найти цитируемый пост)
почему константой ? 

final уберите, оно и объявляет переменную константой.


Цитата(Snik @  13.2.2008,  17:22 Найти цитируемый пост)
я подобным образом объявлял ранее работало , непойму , подскажите как правильно ? 

Наверное, ошиблись. Если объявить переменную с простым типом c модификатором final, то она будет константой, ее уже нельзя изменить.


--------------------
Lost....
PM MAIL MSN   Вверх
Snik
Дата 13.2.2008, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Kangaroo @ 13.2.2008,  18:33)

final уберите, оно и объявляет переменную константой.


Код


C:\Program Files\Java\jdk1.6.0_03\bin>javac L4.java
L4.java:45: local variable jj is accessed from within inner class; needs to be declared final
         kl[jj] = el;
            ^
L4.java:47: local variable jj is accessed from within inner class; needs to be declared final
         lm.addElement(kl[jj].a);
                          ^
L4.java:48: local variable jj is accessed from within inner class; needs to be declared final
         lblout.setText(kl[jj].Pechat());
                           ^
L4.java:49: local variable jj is accessed from within inner class; needs to be declared final
        jj++;
        ^
4 errors

PM MAIL   Вверх
Kangaroo
Дата 13.2.2008, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


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

Репутация: 21
Всего: 104



Ой, я на код не смотрел smile только на ошибку.

Тогда объявляйте счетчик локально в обработчике, а не для класса. Вы же его нигде больше не используете?


--------------------
Lost....
PM MAIL MSN   Вверх
Snik
Дата 13.2.2008, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



это если int jj = 0;

Добавлено через 1 минуту и 16 секунд
но планирую использовать очень надо массив объектов иметь поэтому счетчик необходим
PM MAIL   Вверх
olegrolik
Дата 13.2.2008, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Короче, если на пальцах, то объяви int jj=0; после строчки public void actionPerformed(ActionEvent ae){

PM MAIL   Вверх
Snik
Дата 13.2.2008, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Да но делая так у меня объект все время kl[0]  т.е перезатирается а моя задача создать коллекцию

Код

btnNew.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent ae){
         int jj=0;
         Random rdn = new Random();
         int r0 = rdn.nextInt(6);  
         Klava el = new Klava(A[r0], B[r0], C[r0], D[r0], E[r0]);
         kl[jj] = el; 
         DefaultListModel lm = (DefaultListModel) jlst.getModel();
         lm.addElement(kl[jj].a);
         lblout.setText(kl[jj].Pechat());
         jj++;
       }
     });



и когда я добавлю, то соответственно ошибка
Код

jlst.addListSelectionListener (new ListSelectionListener() {
       public void valueChanged(ListSelectionEvent le){
        int idx = jlst.getSelectedIndex();
        lblout.setText(kl[idx ].a);
              }
     });


а можно както сделать общедоступный счетчик ?
PM MAIL   Вверх
AndrewMormysh
Дата 13.2.2008, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



То, что final делает ссылку неизменной можно побороть примерно так... есди это не повлияет на "логику"
Код

import javax.swing.*;    
import java.awt.event.*;    
import java.awt.*;    
import java.awt.Graphics;    
import java.applet.*;    
import java.util.*;    
import java.util.Random;    
class L4{    
public static void main(String args[])    
{    
  JFrame frame = new JFrame("ЛАБ №4");    
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    
    
  final MyInt jj = new MyInt(0);//счетчик    
  final Klava kl[] = new Klava[100];    
    
  JButton     btnNew    = new JButton(" Создать случайно объект ");    
  final DefaultListModel lm = new DefaultListModel();    
  final JList jlst = new JList(lm);    
  jlst.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);    
  final JLabel lblout = new JLabel("out print ");    
    
   frame.getContentPane().add(btnNew);    
   frame.getContentPane().add(jlst);    
   frame.getContentPane().add(lblout);    
   frame.getContentPane().setLayout(new FlowLayout());    
   final String[]  A   = {"PC/2", "Usb", "Com", "Ultra", "USB2.0", "Bluetooth"};    
   final int       B[] = {60, 48, 8, 70, 53, 4};    
   final int       C[] = {300, 600, 400, 578, 770, 2000};    
   final String[]  D   = {"100 грн.", "150 р.", "34 грн.", "120 usd", "300 р.", "60 грн."};    
   final String[]  E   = {"logotech", "samsung", "jvc", "china", "japan", "sony"};    
     btnNew.addActionListener(new ActionListener() {    
       public void actionPerformed(ActionEvent ae){    
         Random rdn = new Random();    
         int r0 = rdn.nextInt(6);    
         Klava el = new Klava(A[r0], B[r0], C[r0], D[r0], E[r0]);    
         kl[jj.i] = el;    
         DefaultListModel lm = (DefaultListModel) jlst.getModel();    
         lm.addElement(kl[jj.i].a);    
         lblout.setText(kl[jj.i].Pechat());    
        jj.i++;    
       }    
     });    
  frame.setSize(1000,500);    
  frame.setVisible(true);    
     
}    
 }    
//Класс устройство    
class Ustr {    
  String a;     
  int b, c;    
  void init(String a, int b, int c) {    
     this.a = a;    
     this.b = b;    
     this.c = c;    
  }    
  String Pechat(){    
    return "Инфо обьекта: \n"+"Вид устройства "+a+"  к-во клавиш "+b+" питание "+c+" V.";    
  }    
}    
//Класс клава свои методы d, e и  Pechat()    
class Klava extends Ustr {    
  String a;    
  int b,c;    
  String d, e;    
  Klava(String a, int b, int c,String d, String e) {    
    this.a = a; //вид    
    this.b = b; //кво клавиш    
    this.c = c; //питание    
    this.d = d; //цена    
    this.e = e; //производитель    
  }    
  String Pechat(){    
      return "Объект: \n"+"Вид "+a+"  к-во клавиш "+b+"  питание "+c+" V."+"  цена "+d+" \n произв. "+e;    
  }    
}
class MyInt{
    public int i;
    MyInt(int i){
        this.i = i;
    }
}

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

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

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


 




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


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

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