Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.07.2008, 13:33   #1
student_)
Новичок
Джуниор
 
Регистрация: 15.07.2008
Сообщений: 2
По умолчанию как в другом месте программы вызвать case 0?

у меня есть текст проги, в нем впринципе разбираться не нужно, только подскажите, пожалуйста, как в другом месте программы вызвать case 0? а то что-то у меня не получается....
спасибо большое

Код:
 public static class PersonTableComparator extends CorrespondenceListTableConfig.ShortDTOComparator {
        public PersonTableComparator(int field) {
            super(field);
        }

        public int compare(Object o1, Object o2) {
            PersonDTO p1 = (PersonDTO) ((PersonDataRow) o1).getDto(), p2 = (PersonDTO) ((PersonDataRow) o2).getDto();
            int result = 0;
            switch (getField()) {
                case 0:
                    result = compareVocValue(p1.getF_i_o(), p2.getF_i_o());
                    break;      
                case 1:
                    result = compareVocValue(p1.getOrganizaciya(), p2.getOrganizaciya());
                    break;
               case 200:
                {
                    result = compareVocValue(p1.getF_i_o(), p2.getF_i_o());
                    if(result==0) result = compareVocValue(p1.getOrganizaciya(), p2.getOrganizaciya());
                    if(result==0) result = compareVocValue(p1.getDolzhnost(), p2.getDolzhnost()); 
                }
            }
        if (!isAscSort())
                result = -result;
            return result;
        }
    }
student_) вне форума Ответить с цитированием
Старый 15.07.2008, 15:16   #2
Старовъръ
Форумчанин
 
Аватар для Старовъръ
 
Регистрация: 25.06.2008
Сообщений: 100
По умолчанию

То есть? У тебя есть оператор switch, как ты можешь изменить его работу? Если хочешь, можешь просто создать метод какой-нибудь В ДРУГОМ МЕСТЕ и вызывать его из case 0. Или объясни доходчиво что тебе нужно.
Старовъръ вне форума Ответить с цитированием
Старый 15.07.2008, 15:48   #3
student_)
Новичок
Джуниор
 
Регистрация: 15.07.2008
Сообщений: 2
По умолчанию

дело в том, что у меня при нажатии на 1-ый столбец таблицы обрабатывается case 0, т.е. сортируются значения в этой таблице, при нажатии 2 столбца срабатывает case 1 (который сортирует по 2 столбцу всю таблицу) и т.д., а мне надо чтобы по первому столбцу происходила сортировка при загрузке программы, т.е. просто хочу вызвать эту штуку где-нибудь в описании форма. вот
заранее спасибо
student_) вне форума Ответить с цитированием
Старый 15.07.2008, 16:00   #4
Старовъръ
Форумчанин
 
Аватар для Старовъръ
 
Регистрация: 25.06.2008
Сообщений: 100
По умолчанию

Ух, не быть тебе оратором
Вызови метод сортировки там, где тебе необходимо. Не пойму в чем проблема. Кстати, в яве есть стандартные методы сортировки таблицы:
Код:
JTable table = new JTable(myModel);
table.setRowSorter(new TableRowSorter(myModel));
Вроде так, точно не помню.
Старовъръ вне форума Ответить с цитированием
Старый 25.07.2008, 00:15   #5
raf
 
Регистрация: 24.07.2008
Сообщений: 4
Печаль Помогите пожалуйста!!!!!!!!!!!!!!!!!!!!!!!

Помогите уже 3 день пытаюсь понять все неполучается.

Вот пример из учебника.
Код:
class Test{
static String a[] = {"now", "is", "the", "time", "for", "all", "good", "men", "to", "come", "to", "the", "aid", "of", "their", "country"};
  public static void main(String args[]){
    for(int j =0; j<a.length; j++){
       for(int i = j+1; i<a.length; i++){
         if(a[i].compareTo( a[j] )<0){
         String t = a[j];
         a[j] = a[i];
         a[i] = t;
         System.out.println("vxod : " +i);
         }
       }
    System.out.println( a[j] );
    }
  }
}

Написано из учебника цитата:
Метод compareTo() - часто,не достаточно просто знать, идентичны ли две строки.Для приложе-
ний сортировки нужно знать, какая из них меньше, равна, или больше чем другая. Одна строка
считается меньше чем другая, если она расположена перед
другой в словарном (упорядоченном по алфавиту) списке.

т.е получается следующее:

Происходит сравнение например когда программа начинает работать то значению j присваивается 0 ( j = 0 )
а значению i присваивается ( i=j+1 ---> i =1), дальше в программу подставляются соответствующие значения

a[j] = "now"
a[i] = "is"

и теперь они сравниваются is - now т.к

Одна строка (в данном случае is)
считается меньше чем другая, если она расположена перед
другой в словарном (упорядоченном по алфавиту) списке.(так в этом случае и получается потомучто буква i в алфавите стоит перед n).

Значит условие if выполняется.

Что бы слишком много неписать напишу короче.

Вот значения котороые сравниваются и присваиваются переменным

Код:
1.  j=0 , i=1  |  is  -  now  |  true                    
2.  j=o , i=2  |  the - now |  false
3.  j=0 , i =3 |  time - now | false
4.  j=0 , i =4 |  for - now   | true
5.  j=0 , i =5  | all - now   | true
6.  j=0 , i=6  | good - now |true
7.  j=0 , i=7  | men - now  | true
8.  j=0 , i=8  | to - now    | false
9. j=0 , i=9 | come - now | true
10. j=0,  i=10 | to -now |false
11.  j=0 , i=11 | the - now  | false
12.  j=0 , i=12 |aid - now |true
13.  j=0 , i=13 |of - now   |false
14.  j=0 , i=14 |their - now |false
15.  j=0 , i=15 | country - now |true
Отсюда следует что внутренний цикл должен выполниться вот в этих заходах

1, 4, 5, 6, 7, 9, 12, 15

т.е должно быть вот так

Код:
vxod : 1
vxod : 4
vxod : 5
vxod : 6
vxod : 7
vxod : 9
vxod : 12
vxod : 15
Но получается совсем нито что должно.Получается следующее

Код:
vxod : 1
vxod : 4
vxod : 5
vxod : 12
Вопрос почему остальные 6 , 7, 9, 15 неучаствуют?
Если можно то напишите поподробней т.к язык изучаю недавно и невсе еще понимаю.

Если кто знает неполенитесь напишите а то уже незнаю что и делать
3 день ничего нового неучу только с этим примером мучиюсь.
raf вне форума Ответить с цитированием
Старый 25.07.2008, 16:49   #6
edgy
Форумчанин
 
Регистрация: 15.06.2008
Сообщений: 271
По умолчанию

Обратите внимание на этот блок кода:
Код:
 String t = a[j];  
 a[j] = a[i];  
 a[i] = t;
А теперь давайте перед этим блоком выведем массив слов на печать, т.е. нужно будет добавить такие строчки:
Код:
 for ( int k = 0; k < a.length; k++ ){
   System.out.print( a[ k ] + ' ');
 }
Т.е. теперь код должен выглядеть так:
Код:
public class Test {
    static String a[] = {"now", "is", "the", "time", "for", "all", "good", "men", "to", "come", "to", "the", "aid", "of", "their", "country"};   
      public static void main(String args[]){  
        for(int j =0; j<a.length; j++){  
           for(int i = j+1; i<a.length; i++){  
             if(a[i].compareTo( a[j] )<0){  
                 for ( int k = 0; k < a.length; k++ ){
                   System.out.print( a[k] + ' ');
                 }
             String t = a[j];  
             a[j] = a[i];  
             a[i] = t;  
             System.out.println("vxod : " +i);  
             }   
           }   
        System.out.println( a[j] );   
        }   
  }   
}
Запустите на выполнение и посмотрите внимательно на результат. Я думаю вы быстро догадаетесь в чем дело.

Последний раз редактировалось edgy; 25.07.2008 в 17:06.
edgy вне форума Ответить с цитированием
Старый 25.07.2008, 18:22   #7
raf
 
Регистрация: 24.07.2008
Сообщений: 4
По умолчанию edgy

Насколько я понял из примера то меняется сам массив так чтоли?

edgy если тебе нетрудно объясни поподробней как тут все работает
что вот тут происходит никак немогу понять

Код:
   1. String t = a[j];    
   2. a[j] = a[i];    
   3. a[i] = t;
и если можно то как нито попроще я недавно учу поэтому еще не все
понимаю.
raf вне форума Ответить с цитированием
Старый 25.07.2008, 18:37   #8
edgy
Форумчанин
 
Регистрация: 15.06.2008
Сообщений: 271
По умолчанию

Здесь меняются местами 2 элемента (слова) массива. В итоге весь массив слов будет отсортирован по алфавиту.
Просто ты думал, что слово "now" сравнивается по-очередно с остальными словами. Но на самом деле это не совсем так. Если найдено слово, которое "меньше", чем слово, с которым сравнивается, то они меняются местами. Т.е. массив сортируется.
edgy вне форума Ответить с цитированием
Старый 19.08.2008, 16:00   #9
raf
 
Регистрация: 24.07.2008
Сообщений: 4
По умолчанию Помогите с примерчиком

Вот такой пример.
Код:
import  java.util.*;

class Test{
 public static void main(String args[]){
 HashMap h = new HashMap();
 
 h.put("Tom Smith", new Double(3434.34));
 h.put("Vasia Pupkun", "work");

    if(h.containsValue("work")){
    System.out.println("Znachenue nau'deno.");
    }
    else{
    System.out.println("Takogo znachenuya net.");
     }

 }
}
когда ищу текст все работает.А когда пытаюсь найти цифровое значение
вот так:
Код:
import  java.util.*;

class Test{
 public static void main(String args[]){
 HashMap h = new HashMap();
 
 h.put("Tom Smith", new Double(3434.34));
 h.put("Vasia Pupkun", "work");

    if(h.containsValue(3434.34)){
    System.out.println("Znachenue nau'deno.");
    }
    else{
    System.out.println("Takogo znachenuya net.");
     }

 }
}

выкидывает ошибку что значение  Double. Подскажите как написать
чтобы работало а то в книжке ничего ненаписано вобще про это.
raf вне форума Ответить с цитированием
Старый 11.10.2008, 13:55   #10
raf
 
Регистрация: 24.07.2008
Сообщений: 4
По умолчанию

Вот код на клавишy F1.
Код:
import java.awt.*;
import java.awt.event.*;
import java.applet.*;

/*
<applet code="KeyBoard" width=300 height=100>
</applet>
*/

public class KeyBoard extends Applet implements KeyListener{
String msg = "";
int X = 10, Y = 20;

public void init(){
addKeyListener(this);
requestFocus();
}

  public void keyPressed(KeyEvent ke){
  showStatus("Down");
  int key = ke.getKeyCode();

    switch(key){
    case KeyEvent.VK_F1:
    msg +="F1";
    break;
    }
  repaint();
  }
  
   public void keyReleased(KeyEvent ke){
   showStatus("Up");
   }
  
    public void keyTyped(KeyEvent ke){
    msg += ke.getKeyChar();    
    repaint();
    }
    
     public void paint(Graphics g){
     g.drawString(msg, X, Y);
     }

}
Подскажите как написать на вот эти клавши.

1. Tab
2. Значок windows (кнопка между Ctrl и Alt)
3. Print Screen
raf вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Текст из под курсора в любом месте Ring0Sn Win Api 0 27.07.2008 02:19
ошибка в операторе case wowka Помощь студентам 5 24.07.2008 11:47
Задача на case klop.92 Помощь студентам 4 28.04.2008 21:17
Аналог паскалевского case MusicMan Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 21.04.2008 22:10
Case из STRING. HELP! Altera Компоненты Delphi 12 24.02.2008 12:17