powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Помощь в некоторых вопросах по написанию кода Java
2 сообщений из 2, страница 1 из 1
Помощь в некоторых вопросах по написанию кода Java
    #39342225
mishanches
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер, уважаемые форумчане.
Недавно стал изучать язык Java по книге Файн Я. "Программирование на Java для детей, родителей, дедушек и бабушек (2011)". Разбирают в этой книге несколько примеров, в частности, как сделать простейший калькулятор. Много моментов понятны по книге и калькулятору, но интересуют несколько вопросов по примеру. Кому не сложно, сможете подсказать.
Калькулятор в этой книге можно сделать с помощью 2-ух классов: Calculator и CalculatorEngine. В классе Calculator все понятно, но в классе CalculatorEngine начались непонятности.

Класс CalculatorEngine:

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JButton;

public class CalculatorEngine implements ActionListener {

Calculator parent;

char selectedAction = ' ';
double currentResult =0;

CalculatorEngine(Calculator parent)

{
this.parent = parent;
}

public void actionPerformed(ActionEvent e){

JButton clickedButton = (JButton) e.getSource();
String dispFieldText=parent.displayField.getText();
double displayValue=0;

if (!"".equals(dispFieldText)){
displayValue= Double.parseDouble(dispFieldText);
}

Object src = e.getSource();

if (src == parent.buttonPlus){
selectedAction = '+';
currentResult=displayValue;
parent.displayField.setText(""); }

else if (src == parent.buttonMinus){
selectedAction = '-';
currentResult=displayValue;
parent.displayField.setText("");
}
else if (src == parent.buttonDel){
selectedAction = '/';
currentResult=displayValue;
parent.displayField.setText(""); }

else if (src == parent.buttonUmn){
selectedAction = '*';
currentResult=displayValue;
parent.displayField.setText("");
} else if (src == parent.buttonEqual){

if (selectedAction=='+'){
currentResult+=displayValue;

parent.displayField.setText(""+currentResult);

}else if (selectedAction=='-'){
currentResult -=displayValue;
parent.displayField.setText(""+currentResult);
}else if (selectedAction=='/'){
currentResult /=displayValue;
parent.displayField.setText(""+currentResult);
}else if (selectedAction=='*'){
currentResult*=displayValue;

parent.displayField.setText(""+currentResult);

}
} else{

String clickedButtonLabel= clickedButton.getText();
parent.displayField.setText(dispFieldText +
clickedButtonLabel); }
}
}

Может кто-нибудь хотя бы примерно рассказать, что каждая строчка обозначает (выделено красным), или расписать логику (например, Object src = e.getSource(); - означает то-то-то-то, строка if (!"".equals(dispFieldText)){ displayValue= Double.parseDouble(dispFieldText); - означает то-то-то-то).

Класс Calculator (тут все понятно):

import javax.swing.*;
import java.awt.GridLayout;
import java.awt.BorderLayout;
public class Calculator {


JPanel windowContent;
JTextField displayField;
JButton button0;
JButton button1;
JButton button2;
JButton button3;
JButton button4;
JButton button5;
JButton button6;
JButton button7;
JButton button8;
JButton button9;
JButton buttonPoint;
JButton buttonEqual;
JPanel p1;
JPanel p2;
JButton buttonPlus;
JButton buttonMinus;
JButton buttonUmn;
JButton buttonDel;


Calculator(){

windowContent= new JPanel();


BorderLayout bl = new BorderLayout();
windowContent.setLayout(bl);



displayField = new JTextField(30);
windowContent.add("North",displayField);

p2 = new JPanel();
GridLayout gll = new GridLayout(4,1);
p2.setLayout(gll);

button0=new JButton("0");
button1=new JButton("1");
button2=new JButton("2");
button3=new JButton("3");
button4=new JButton("4");
button5=new JButton("5");
button6=new JButton("6");
button7=new JButton("7");
button8=new JButton("8");
button9=new JButton("9");
buttonPoint = new JButton(".");
buttonEqual=new JButton("=");
buttonPlus=new JButton("+");
buttonMinus=new JButton("-");
buttonUmn=new JButton("*");
buttonDel=new JButton("/");

p1 = new JPanel();
GridLayout gl =new GridLayout(4,3);
p1.setLayout(gl);

p1.add(button1);
p1.add(button2);
p1.add(button3);
p1.add(button4);
p1.add(button5);
p1.add(button6);
p1.add(button7);
p1.add(button8);
p1.add(button9);
p1.add(button0);
p1.add(buttonPoint);
p1.add(buttonEqual);
p2.add(buttonPlus);
p2.add(buttonMinus);
p2.add(buttonUmn);
p2.add(buttonDel);

windowContent.add("Center",p1);
windowContent.add("East",p2);

JFrame frame = new JFrame("Calculator");
frame.setContentPane(windowContent);

frame.pack();

frame.setVisible(true);

CalculatorEngine calcEngine = new CalculatorEngine(this);
button0.addActionListener(calcEngine);
button1.addActionListener(calcEngine);
button2.addActionListener(calcEngine);
button3.addActionListener(calcEngine);
button4.addActionListener(calcEngine);
button5.addActionListener(calcEngine);
button6.addActionListener(calcEngine);
button7.addActionListener(calcEngine);
button8.addActionListener(calcEngine);
button9.addActionListener(calcEngine);
buttonPoint.addActionListener(calcEngine);
buttonPlus.addActionListener(calcEngine);
buttonMinus.addActionListener(calcEngine);
buttonDel.addActionListener(calcEngine);
buttonUmn.addActionListener(calcEngine);
buttonEqual.addActionListener(calcEngine);
}
public static void main(String[] args) {
Calculator calc = new Calculator(); }

}

Заранее благодарен всем откликнувшимся.
...
Рейтинг: 0 / 0
Помощь в некоторых вопросах по написанию кода Java
    #39342234
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mishanches
public class CalculatorEngine implements ActionListener {

Calculator parent;

char selectedAction = ' ';
double currentResult =0;

CalculatorEngine(Calculator parent)

{
this.parent = parent;
}


Начну с первой вашей красной строчки, прочитайте вот это https://goo.gl/SkUl7t про ключевое слово this
Кратко: CalculatorEngine(Calculator parent) тип класса Calculator и название переменной parent указывают констуктору объекты какого типа он может принимать, в данном случае вы понимаете, что это тип Calculator
Но выше вы видите, что объявлена переменная такого же типа (Calculator) и с таким же именем - parent.
this.parent - означает, что мы имеем ввиду переменную, которая объявлена в классе CalculatorEngine, а не та , которая указана как входящий параметр конструктора этого же класса.
Чтобы было проще понять, перепишем код вот так, но это, как говорится, не кошерно, хотя я иногда использую.

public class CalculatorEngine implements ActionListener {

Calculator parent;

char selectedAction = ' ';
double currentResult =0;

CalculatorEngine(Calculator parentIn)

{
parent = parentIn;
}

Короче, чтобы компилятор понял какой именно parent какому parent вы присваиваете, компилятору надо указать это слово this.
Вообще в любой IDE при выделении переменной в коде, можно сразу увидеть где она еще используется, да и плюс переменные на входе и переменные объявленные в классе отличаются в IDE по цвету. Все становится понятным.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Помощь в некоторых вопросах по написанию кода Java
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]