Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Можно ли упростить код ввода с клавиатуры, присвоение ввода переменной 
:(
    Опции темы
platonos
Дата 1.1.2017, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вот код:
Код

Map rim_arab = [ "I":1, "V":5, "X":10, "L":50, "C":100, "D":500, "M":1000]
[color=orange]BufferedReader br = new BufferedReader(new InputStreamReader(System.in))[/color]
Rim = "q"
while( Rim != "n") { 
print "Vvedite Rim = "
[color=orange]Rim = br.readLine()[/color]
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 + rim_arab[i]}
print "Arab = "; println Arab
                   }

Код ввода взят у Шмидта и Эккеля (из их книг по Java)
Можно ли упростить ввод в "духе" Groovy...
PM MAIL   Вверх
zera
Дата 8.1.2017, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 19.1.2006
Где: saint-petersburg

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



если я правильно понял вопрос, то смотреть в сторону java.io.Console
PM MAIL   Вверх
platonos
Дата 26.1.2017, 03:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вот более пристойная реализация цикла:
Код:

Код

Map rim_arab = [ "I":1, "V":5, "X":10, "L":50, "C":100, "D":500, "M":1000]
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)) 
print "Vvedite Rim = "
Rim = br.readLine()  
while( Rim != "n") {           
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 + rim_arab[i]}
print "Arab = "; println Arab
print "Vvedite Rim = "
Rim = br.readLine()
                   }

Но, то что мне действительно надо - это код осуществляющий бесконечный цикл, и выход из этого цикла по достижению истинности условия!...
PM MAIL   Вверх
platonos
Дата 4.2.2017, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Из арабских в римские:
Код

List Rim = [ "I", "V", "X", "L", "C", "D", "M"]
BufferedReader br = new BufferedReader(new InputStreamReader(System.in))
print "Vvedite Arab = "
Arab = br.readLine()
while( Arab != "n") { 
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}
S = L.reverse().join(); print "Rim = "; println S
print "Vvedite Arab = "
Arab = br.readLine() }

PM MAIL   Вверх
platonos
Дата 19.2.2017, 01:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Корректная реализация цикла:
Код

Map rim_arab = [ "I":1, "V":5, "X":10, "L":50, "C":100, "D":500, "M":1000]
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)) 
while( 1) {  
print "Vvedite Rim = "
Rim = br.readLine(); if(Rim == "n") {break}        
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 + rim_arab[i]}
print "Arab = "; println Arab
                   } 
                 

PM MAIL   Вверх
platonos
Дата 3.3.2017, 03:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

Map rim_arab = [ "I":1, "V":5, "X":10, "L":50, "C":100, "D":500, "M":1000]
//BufferedReader br = new BufferedReader(new InputStreamReader(System.in)) 
while( 1) { 
String Rim 
print "Vvedite Rim = "
Rim = rim_arab.readLine[]; if(Rim == "n") {break}        
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 + rim_arab[i]}
print "Arab = "; println Arab }

 smile 
PM MAIL   Вверх
platonos
Дата 3.3.2017, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



По поводу упрощения ввода продолжаю  smile 
а пока следующее:
Код

def rimarab(Rim) {
Map rimArab = [ "I":1, "V":5, "X":10, "L":50, "C":100, "D":500, "M":1000]
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]}                 
                 }
BufferedReader br = new BufferedReader(new InputStreamReader(System.in))
while( 1) { 
print "Vvedite Rim = "
Rim = br.readLine(); if(Rim == "n") {break}
rimarab(Rim)      
print "Arab = "; println Arab 
          }

PM MAIL   Вверх
platonos
Дата 4.3.2017, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Продолжаем... smile 

Код

def Vvod () {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in))
print "Vvedite Rim = "; Rim = br.readLine()
            }
def rimarab (Rim) {
Map rimArab = [ "I":1, "V":5, "X":10, "L":50, "C":100, "D":500, "M":1000]
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]}
                  }
def Vivod () { print "Arab = "; println Arab}
while (1) { 
Vvod (); if(Rim == "n") {break}
rimarab (Rim)      
Vivod ()  }

PM MAIL   Вверх
zera
Дата 7.3.2017, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 19.1.2006
Где: saint-petersburg

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



еще раз отвечу на вопрос
java.io.Console
PM MAIL   Вверх
platonos
Дата 8.3.2017, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

def Vvod () {print "Vvedite Rim = "; Rim = System.in.newReader().readLine()}


Это сообщение отредактировал(а) platonos - 8.3.2017, 17:24
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Groovy & Grails | Следующая тема »


 




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


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

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