Форум русскоязычного сообщества Ubuntu


За новостями русскоязычного сообщества и Ubuntu в целом можно следить на нашей страничке в Google+

Автор Тема: Java, оператор с 2-мя условиями  (Прочитано 423 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн MrVolt

  • Автор темы
  • Новичок
  • *
  • Сообщений: 25
  • Don't Disturbed
    • Просмотр профиля
Java, оператор с 2-мя условиями
« : 15 Март 2014, 20:16:11 »
Всем привет. Пишу программку. Суть такая - если пользователь забивает в первые 3 jtextfield данные - идёт вычисление и остальные колонки заполняются результатами...2 столба с колонками. Левая и правая сторона. Но вот дошёл я до условия, где нужно соблюдение 2-х вариантов (и соответственно заполнение обоих столбов). Кусок кода такой:

else if ((jtf3.getText().length()==2) && (jtf16.getText().length()==2)) {

int a=Integer.parseInt(jtf1.getText());
Double b=Double.parseDouble(jtf2.getText());
int d=Integer.parseInt(jtf3.getText());

int a2=Integer.parseInt(jtf13.getText());
Double b2=Double.parseDouble(jtf15.getText());
int d2=Integer.parseInt(jtf16.getText());

Double B=a/25.4;
Double D = b*2/25.4/100*a+d;
                    Double bnepr=a*b/100;
                    Double bpol=bnepr*2+(d*25.4);
                   
Double B2=a2/25.4;
Double D2 = b2*2/25.4/100*a2+d2;
                    Double bnepr2=a2*b2/100;
                    Double bpol2=bnepr2*2+(d2*25.4);                   

double D0=Math.rint(D);
int D1=(int)D0;
B=B*10;
int B0=(int) Math.round(B);
double B1=(double)B0/10;
bnepr=bnepr*1;
int bnepr0=(int)Math.round(bnepr);
int bnepr1=(int)bnepr0/1;

bpol=bpol*1;
int bpol0=(int)Math.round(bpol);
int bpol1=(int)bpol0/1;

double D02=Math.rint(D2);
int D12=(int)D02;
B2=B2*10;
int B02=(int) Math.round(B2);
double B12=(double)B02/10;
bnepr2=bnepr2*1;
int bnepr02=(int)Math.round(bnepr2);
int bnepr12=(int)bnepr02/1;

bpol2=bpol2*1;
int bpol02=(int)Math.round(bpol2);
int bpol12=(int)bpol02/1;

jtf4.setText(""+D1);
jtf5.setText(""+B1);
jtf6.setText(""+d);
jtf7.setText(""+a);
jtf8.setText(""+bnepr1);
jtf9.setText(""+bpol1);

jtf17.setText(""+D12);
jtf18.setText(""+B12);
jtf19.setText(""+d2);
jtf20.setText(""+a2);
jtf21.setText(""+bnepr12);
jtf22.setText(""+bpol12);


}

он заполняет только левый край программы, а правый (от 17 до 22 текстового поля) - не заполняет. В чём проблема? Eclipse не выдаёт ошибку. Да и я её не вижу... Кто подскажет? До этого использовались только одинарные условия - они работают.

ПыСы. Приму жёсткую и конструктивную критику. Только учусь. Но пожалуйста с объяснениями. :(

Оффлайн soarin

  • Старожил
  • *
  • Сообщений: 1467
  • ubuntu 18.04
    • Просмотр профиля
Re: Java, оператор с 2-мя условиями
« Ответ #1 : 15 Март 2014, 21:08:24 »
Double - это класс, double - простой числовой тип.
Вообще полный кошмар и бред, советую забросить пока самостоятельную практику и прочитать вдумчиво несколько первых глав хорошей книжки, например Шилдт "Java".
« Последнее редактирование: 15 Март 2014, 21:10:05 от soarin »

Оффлайн MrVolt

  • Автор темы
  • Новичок
  • *
  • Сообщений: 25
  • Don't Disturbed
    • Просмотр профиля
Re: Java, оператор с 2-мя условиями
« Ответ #2 : 15 Март 2014, 21:25:57 »
Хм... кошмар и бред то понятно. Но всё же - что не так с условием?
И вопрос по double - если мне нужно урезать число double от 10,438762308, до 10,4 - как поступить? что то похожее на нормальный ответ не нашёл ни в документации, ни на форумах. пришлось делать, как вы выразились - бред и кошмар.

Оффлайн peregrine

  • FSM
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 7080
  • Gentoo x64 Ubuntu 16.04.1 x64
    • Просмотр профиля
Re: Java, оператор с 2-мя условиями
« Ответ #3 : 15 Март 2014, 23:45:38 »
MrVolt, не называть классы, переменные похожим образом на ключевые слова ЯП. Не лениться и писать длинные названия. Читать книги по JAVA.

Оффлайн JmAbuDabi

  • Старожил
  • *
  • Сообщений: 2468
  • 나는 빅터 해요. 나는 프로그래머입니다
    • Просмотр профиля
Re: Java, оператор с 2-мя условиями
« Ответ #4 : 16 Март 2014, 03:31:05 »
Хм... кошмар и бред то понятно. Но всё же - что не так с условием?
И вопрос по double - если мне нужно урезать число double от 10,438762308, до 10,4 - как поступить? что то похожее на нормальный ответ не нашёл ни в документации, ни на форумах. пришлось делать, как вы выразились - бред и кошмар.

Например вот так:

Код: Java
  1. import java.text.DecimalFormat;
  2.  
  3. public class MainClass {
  4.         public static void main(String args[])
  5.         {
  6.                 double causeDouble = 45.434367465374654;               
  7.                 String formatedDouble = String.format("%.10f", causeDouble);
  8.                 DecimalFormat df = new DecimalFormat("#.###");
  9.                 System.out.println(causeDouble);
  10.                 System.out.println(df.format(causeDouble));
  11.                 System.out.println(formatedDouble);
  12.         }
  13. }
  14.  
  15.  
Покой – это не место, где тихо и мирно, где нет шума и беспокойства.
Покой – это когда при всем этом, вы сохраняете мир и спокойствие в своем сердце.

Оффлайн MrVolt

  • Автор темы
  • Новичок
  • *
  • Сообщений: 25
  • Don't Disturbed
    • Просмотр профиля
Re: Java, оператор с 2-мя условиями
« Ответ #5 : 16 Март 2014, 09:25:10 »
JmAbuDabi,
спасибо! попробую. А что касается 2-х условий, почему не реализуется, не подскажите?


Оффлайн JmAbuDabi

  • Старожил
  • *
  • Сообщений: 2468
  • 나는 빅터 해요. 나는 프로그래머입니다
    • Просмотр профиля
Re: Java, оператор с 2-мя условиями
« Ответ #6 : 16 Март 2014, 10:05:49 »
Можно поподробнее суть задания.
Покой – это не место, где тихо и мирно, где нет шума и беспокойства.
Покой – это когда при всем этом, вы сохраняете мир и спокойствие в своем сердце.

Оффлайн MrVolt

  • Автор темы
  • Новичок
  • *
  • Сообщений: 25
  • Don't Disturbed
    • Просмотр профиля
Re: Java, оператор с 2-мя условиями
« Ответ #7 : 16 Март 2014, 10:17:48 »
JmAbuDabi,
имеется 6 полей ввода. 3 слева и три справа. Обозначим их А1, А2, А3 и соответственно Б1, Б2, Б3. Под группой А и Б есть так же поля (setEditable(false)).

Если заполняется А3 - присвоить вниз группе А определённые значения (по формулам).
Иначе, если заполняется Б3 - присвоить вниз группе Б определённые значения (по формулам).
Иначе, если заполняется А3 и Б3 - присвоить группе А и Б соответствующие им значения.

Присваивание осуществляется кнопкой "Считать".


1 и 2 условие я реализовал. 3-е не работает. Заполняются при нажатии только поля группы А.

Оффлайн JmAbuDabi

  • Старожил
  • *
  • Сообщений: 2468
  • 나는 빅터 해요. 나는 프로그래머입니다
    • Просмотр профиля
Re: Java, оператор с 2-мя условиями
« Ответ #8 : 16 Март 2014, 10:28:54 »
А ты сделай вот так:

Если есть значение в Группе А, заполнить А.
Если есть значения в Группе Б, заполнить Б.

Больше ничего не нужно, так как если ты заполнишь группы А и Б одновременно, то у тебя выполнится команда заполнение А и Б соответственно.

Ничего крутить с третьим условием не надо. оно лишнее.

Желательно сделать функции заполнения А и Б. А если они одинаковы, то вообще здорово.
Функции зависят от трех параметров.
Создать функцию проверки заполнение полей соответсвующей группы. И тогда код станет таким.
Также если функции проверки isFullA и isFullB одиннаковы, то использовать одну реализацию
Код: Java
  1. if (isFullA(field1, field2, field3)) setA(field1,field2,field3);
  2. if (isFullA(field4, field5, field6)) setB(field4,field5,field6);
Покой – это не место, где тихо и мирно, где нет шума и беспокойства.
Покой – это когда при всем этом, вы сохраняете мир и спокойствие в своем сердце.

Оффлайн MrVolt

  • Автор темы
  • Новичок
  • *
  • Сообщений: 25
  • Don't Disturbed
    • Просмотр профиля
Re: Java, оператор с 2-мя условиями
« Ответ #9 : 16 Март 2014, 10:57:06 »
JmAbuDabi,
огромнейшее спасибо за помощь! вот теперь я понял, как и что сделать) спасибо за единственно точный ответ!

 

Страница сгенерирована за 0.085 секунд. Запросов: 25.