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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.10.2017, 20:57   #1
leprekod
Пользователь
 
Регистрация: 18.12.2016
Сообщений: 37
По умолчанию Из арабских в римские, и обратно ...

Вот код готового проекта на Groovy ...
Я размещаю его здесь по двум причинам:
1. В качестве примера GUI небольшого приложения (вдруг кто то найдет для себя что нибудь полезное ...)
2. И для того чтобы улучшить его функциональность (с помощью вопросов-ответов ...)
Итак как сделать так, чтобы:
Текст в текстовых полях был разного цвета;
При нажатии Enter происходил перевод числа из активного поля;
При нажатии Delete происходило очищение активного поля;
А так же мне надо знать как применить regex к полям, чтобы в них печатался только тот текст который соответствует этим regex (сами regex уже готовы)
Код:
//chislo1.groovy
package groovy
import groovy.swing.SwingBuilder
import javax.swing.*
import java.awt.FlowLayout
import java.util.*
import java.awt.*
import java.awt.event.*

public class ArabRim_2 { def Arabrim_2 (Arab) { ArabRim m3 = new ArabRim(); def   Rim = m3.Arabrim(Arab); return Rim }}
                         def Arabrim (Arab) {ArabRim_2 m4 = new ArabRim_2();  Rim = m4.Arabrim_2(Arab)}
  
public class RimArab_2 { def Rimarab_2 (Rim) { RimArab m1 = new RimArab(); def   Arab = m1.Rimarab(Rim); return Arab }}
                         def Rimarab (Rim) {RimArab_2 m2 = new RimArab_2();  Arab = m2.Rimarab_2(Rim)}

swinger = new SwingBuilder()
gui = swinger.frame(title:'Арабские << >> Римские', size: [540, 160]) {
  panel(layout: new FlowLayout()) {
  arabrim =  new JLabel('Это  приложение  переводит  из  арабской  системы  счисления  в  римскую  и  обратно !')
  arabrim.setBorder(BorderFactory.createEtchedBorder())
  panel().add(arabrim)
  panel(layout: new FlowLayout()) {
    arab = new JLabel('Арабское число:')
      panel().add(arab)
        message1 = textField(columns: 12)
          button11 = swinger.button(text: 'Вычислить', actionPerformed: {message2.setText("${Arabrim(message1.text)}")})
          button12 = swinger.button(text: 'Очистить',  actionPerformed: {message1.setText("")})
    }
  panel(layout: new FlowLayout()) {
    rim  = new JLabel('Римское   число:')
      panel().add(rim)
        message2 = textField(columns: 12)
          button21 = swinger.button(text: 'Вычислить', actionPerformed: {message1.setText("${Rimarab(message2.text)}")})
          button22 = swinger.button(text: 'Очистить',  actionPerformed: {message2.setText("")})
    }}}
gui.show()
Код:
//ArabRim.groovy
package groovy
public class ArabRim {
    String Rim, A, r, r2, r1
    Integer i, x, iI, iV, iX, x1
    List L, rim = [ "I", "V", "X", "L", "C", "D", "M"]
  def Arabrim (Arab) {
    A = Arab.reverse(); i = 0; L = []
  for( v in A){ x = v as Integer; iI = i*2; iV = 2*i+1; iX = 2*i+2
    switch (x){
      case 4:    r  = rim[iI] + rim[iV]; break
      case 9:    r  = rim[iI] + rim[iX]; break
      case 1..3: r  = ""; for( int j = 0; j < x;  j++){ r  = r  + rim[iI]}; break
      case 5..8: r2 = ""; x1 = x - 5; for( int j = 0; j < x1; j++){ r2 = r2 + rim[iI]}; r1 = rim[iV]; r = r1 + r2; break
      case 0:    r  = ""; break }
           ++i; L = L + r }
    Rim = L.reverse().join()
   }
}
Код:
//RimArab.groovy
package groovy
public class RimArab {
    String  f; Integer Arab
    Map rimArab = ["I":1, "V":5, "X":10, "L":50, "C":100, "D":500, "M":1000]
  def Rimarab (Rim) {
    f = Rim.replace("IV", "IIII").replace("IX", "VIIII").replace("XL", "XXXX").replace("XC", "LXXXX").replace("CD", "CCCC").replace("CM", "DCCCC")
    Arab = 0; for(i in f) { Arab = Arab + rimArab[i]}; return Arab
   }
}
Код:
//Main.java
package javaclass;
public class Main {
      public static void main(String args[]) {
        chislo1 m2 = new chislo1();
        m2.run();
        chislo1 m4 = new chislo1();
        m4.run();
    }
}
Код:
//chislo1.java
package javaclass;
class chislo1 {
    void run() {
        throw new UnsupportedOperationException("Not yet implemented");
    }
}
leprekod вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа перевода арабских чисел в римские с++ Дана188 Помощь студентам 1 19.03.2015 10:28
перевод арабских цифр в римские a1t2m3 Помощь студентам 1 10.04.2014 14:39
Римские цифры! phreaker228 Помощь студентам 2 11.06.2011 23:55
Перевод арабских чисел в римские на ассемблере Ortega Помощь студентам 1 18.12.2010 22:36
как перевести из integer в real(и обратно), и из real в string(и обратно) Ga-sergey Общие вопросы Delphi 2 08.06.2007 21:13