Diskuze: Pole a ArrayList
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Odpovídá na Adamator
Juraj Mlich:28.12.2013 10:09
Juraj Mlich:28.12.2013 10:09
Prejdi ich v cykle a pričítavaj ich k premennej vytvorenej mimo cyklu...
Odpovídá na Adamator
Silvinios:28.12.2013 10:27
Silvinios:28.12.2013 10:27
Pole v Javě má pevnou délku, kterou je třeba zadat při jeho vytvoření. Pokud délku pole neznáš předem a netrápí tě výkon aplikace, je výhodnější použít List.
List<Integer> cisla = Arrays.asList(20, 10, 5);
int soucet = 0;
for (int cislo : cisla) {
soucet += cislo;
}
Odpovídá na Silvinios
Kit:28.12.2013 11:12
Kit:28.12.2013 11:12
ArrayList je interně také pole, takže to na výkon aplikace moc velký vliv nemá, ale významným bonusem je elegance některých operací.
Odpovídá na Neaktivní uživatel
Kit:28.12.2013 12:24
Kit:28.12.2013 12:24
Říká se, že pokud aplikace obsahuje alespoň jeden řádek, obsahuje alespoň jednu chybu. Toto tvrzení platí i zde: Kde nic není, tam nemůže být ani chyba.
Adamator:28.12.2013 13:41
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.*;
public class App extends JFrame {
private static final long serialVersionUID = 1L;
// Vytváření komponentů
JPanel jp = new JPanel();
JTextField ansF = new JTextField();
JButton b1 = new JButton("1"), b2 = new JButton("2"),
b3 = new JButton("3"), b4 = new JButton("4"),
b5 = new JButton("5"), b6 = new JButton("6"),
b7 = new JButton("7"), b8 = new JButton("8"),
b9 = new JButton("9"), b0 = new JButton("0"),
bČ = new JButton(","), bE = new JButton("="),
bP = new JButton("+"), bM = new JButton("-"),
bK = new JButton("*"), bD = new JButton("/"), bPM = new JButton(
"+/-"), bC = new JButton("C"), bMM = new JButton("M-"),
bMP = new JButton("M+"), bMRC = new JButton("MRC");
// Ostatní
boolean actConfirmed = true, scitani = false, odcitani = false,
nasobeni = false, deleni = false;
double number1, number2, answer, mSouc, pSouc;
ArrayList<Double> pNums = new ArrayList<Double>();
ArrayList<Double> mNums = new ArrayList<Double>();
GridBagConstraints gbc = new GridBagConstraints();
// Frame
private static App a;
// Konstruktor
public App() {
// Inicializace
Init();
// Práce s FRAMEM
setVisible(true);
setTitle("Calculator");
setSize(285, 420);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setResizable(false);
setLayout(new BorderLayout());
// Přidávání komponentů do FRAMU
add(ansF, BorderLayout.NORTH);
getContentPane().add(jp, BorderLayout.CENTER);
addingButtons();
actionButtons();
}
// Ostatní metody
public void Init() {
ansF.setEditable(false);
ansF.setFont(new Font("Consolas", 1, 50));
ansF.setText("0");
b0.setFont(new Font("Consolas", 1, 25));
b1.setFont(new Font("Consolas", 1, 25));
b2.setFont(new Font("Consolas", 1, 25));
b3.setFont(new Font("Consolas", 1, 25));
b4.setFont(new Font("Consolas", 1, 25));
b5.setFont(new Font("Consolas", 1, 25));
b6.setFont(new Font("Consolas", 1, 25));
b7.setFont(new Font("Consolas", 1, 25));
b8.setFont(new Font("Consolas", 1, 25));
b9.setFont(new Font("Consolas", 1, 25));
bPM.setFont(new Font("Consolas", 1, 25));
bC.setFont(new Font("Consolas", 1, 25));
bP.setFont(new Font("Consolas", 1, 25));
bM.setFont(new Font("Consolas", 1, 25));
bK.setFont(new Font("Consolas", 1, 25));
bD.setFont(new Font("Consolas", 1, 25));
bE.setFont(new Font("Consolas", 1, 25));
bČ.setFont(new Font("Consolas", 1, 25));
bMP.setFont(new Font("Consolas", 1, 20));
bMM.setFont(new Font("Consolas", 1, 20));
bMRC.setFont(new Font("Consolas", 1, 15));
}
public void addingButtons() {
jp.setLayout(new GridBagLayout());
gbc.insets = new Insets(5, 5, 5, 5);
gbc.gridx = 0;
gbc.gridy = 0;
jp.add(bC, gbc);
gbc.gridx = 1;
gbc.gridy = 0;
jp.add(bMP, gbc);
gbc.gridx = 2;
gbc.gridy = 0;
jp.add(bMM, gbc);
gbc.gridx = 3;
gbc.gridy = 0;
jp.add(bMRC, gbc);
gbc.gridx = 2;
gbc.gridy = 1;
jp.add(bK, gbc);
gbc.gridx = 3;
gbc.gridy = 1;
jp.add(bD, gbc);
gbc.gridx = 0;
gbc.gridy = 2;
jp.add(b7, gbc);
gbc.gridx = 1;
gbc.gridy = 2;
jp.add(b8, gbc);
gbc.gridx = 2;
gbc.gridy = 2;
jp.add(b9, gbc);
gbc.gridx = 3;
gbc.gridy = 2;
jp.add(bP, gbc);
gbc.gridx = 0;
gbc.gridy = 3;
jp.add(b4, gbc);
gbc.gridx = 1;
gbc.gridy = 3;
jp.add(b5, gbc);
gbc.gridx = 2;
gbc.gridy = 3;
jp.add(b6, gbc);
gbc.gridx = 3;
gbc.gridy = 3;
jp.add(bM, gbc);
gbc.gridx = 0;
gbc.gridy = 4;
jp.add(b1, gbc);
gbc.gridx = 1;
gbc.gridy = 4;
jp.add(b2, gbc);
gbc.gridx = 2;
gbc.gridy = 4;
jp.add(b3, gbc);
gbc.gridx = 3;
gbc.gridy = 4;
gbc.gridheight = 2;
gbc.fill = GridBagConstraints.VERTICAL;
jp.add(bE, gbc);
gbc.gridx = 0;
gbc.gridy = 5;
gbc.gridwidth = 2;
gbc.gridheight = 1;
gbc.fill = GridBagConstraints.HORIZONTAL;
jp.add(b0, gbc);
gbc.gridx = 2;
gbc.gridy = 5;
gbc.gridwidth = 1;
gbc.gridheight = 1;
jp.add(bČ, gbc);
gbc.gridx = 0;
gbc.gridy = 1;
gbc.gridwidth = 2;
gbc.gridheight = 1;
gbc.fill = GridBagConstraints.HORIZONTAL;
jp.add(bPM, gbc);
}
public void actionButtons() {
b1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (!actConfirmed) {
ansF.setText(ansF.getText() + "1");
} else {
actConfirmed = false;
ansF.setText("");
ansF.setText(ansF.getText() + "1");
}
}
});
b2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (!actConfirmed) {
ansF.setText(ansF.getText() + "2");
} else {
actConfirmed = false;
ansF.setText("");
ansF.setText(ansF.getText() + "2");
}
}
});
b3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (!actConfirmed) {
ansF.setText(ansF.getText() + "3");
} else {
actConfirmed = false;
ansF.setText("");
ansF.setText(ansF.getText() + "3");
}
}
});
b4.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (!actConfirmed) {
ansF.setText(ansF.getText() + "4");
} else {
actConfirmed = false;
ansF.setText("");
ansF.setText(ansF.getText() + "4");
}
}
});
b5.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (!actConfirmed) {
ansF.setText(ansF.getText() + "5");
} else {
actConfirmed = false;
ansF.setText("");
ansF.setText(ansF.getText() + "5");
}
}
});
b6.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (!actConfirmed) {
ansF.setText(ansF.getText() + "6");
} else {
actConfirmed = false;
ansF.setText("");
ansF.setText(ansF.getText() + "6");
}
}
});
b7.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (!actConfirmed) {
ansF.setText(ansF.getText() + "7");
} else {
actConfirmed = false;
ansF.setText("");
ansF.setText(ansF.getText() + "7");
}
}
});
b8.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (!actConfirmed) {
ansF.setText(ansF.getText() + "8");
} else {
actConfirmed = false;
ansF.setText("");
ansF.setText(ansF.getText() + "8");
}
}
});
b9.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (!actConfirmed) {
ansF.setText(ansF.getText() + "9");
} else {
actConfirmed = false;
ansF.setText("");
ansF.setText(ansF.getText() + "9");
}
}
});
b0.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (!actConfirmed) {
ansF.setText(ansF.getText() + "0");
} else {
actConfirmed = false;
ansF.setText("");
ansF.setText(ansF.getText() + "0");
}
}
});
bC.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
actConfirmed = true;
bP.setBackground(null);
bM.setBackground(null);
bK.setBackground(null);
bD.setBackground(null);
ansF.setText("0");
number1 = 0;
number2 = 0;
deleni = false;
scitani = false;
odcitani = false;
nasobeni = false;
pSouc = 0;
mSouc = 0;
pNums.clear();
mNums.clear();
}
});
bP.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (!ansF.getText().equals("")) {
number1 = (Double.parseDouble(String.valueOf(ansF.getText())));
actConfirmed = true;
scitani = true;
bP.setBackground(Color.GREEN);
bM.setBackground(null);
bK.setBackground(null);
bD.setBackground(null);
}
}
});
bM.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (!ansF.getText().equals("")) {
number1 = (Double.parseDouble(String.valueOf(ansF.getText())));
actConfirmed = true;
odcitani = true;
bM.setBackground(Color.GREEN);
bP.setBackground(null);
bK.setBackground(null);
bD.setBackground(null);
}
}
});
bK.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (!ansF.getText().equals("")) {
number1 = (Double.parseDouble(String.valueOf(ansF.getText())));
actConfirmed = true;
nasobeni = true;
bK.setBackground(Color.GREEN);
bD.setBackground(null);
bM.setBackground(null);
bP.setBackground(null);
}
}
});
bD.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (!ansF.getText().equals("")) {
number1 = (Double.parseDouble(String.valueOf(ansF.getText())));
actConfirmed = true;
deleni = true;
bD.setBackground(Color.GREEN);
bK.setBackground(null);
bM.setBackground(null);
bP.setBackground(null);
}
}
});
bPM.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (ansF.getText().equals("0")) {
ansF.setText("-");
} else if (ansF.getText().equals("-")) {
ansF.setText("0");
} else {
if (!actConfirmed == true) {
double x = (Double.parseDouble(String.valueOf(ansF
.getText())));
x *= -1;
if (x == (int) x)
ansF.setText(String.valueOf((int) x));
else
ansF.setText(String.valueOf(x));
} else
ansF.setText("-");
}
}
});
bČ.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (ansF.getText().contains(".")) {
ansF.setText(ansF.getText());
} else {
ansF.setText(ansF.getText() + ".");
}
}
});
bE.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
number2 = (Double.parseDouble(String.valueOf(ansF.getText())));
actConfirmed = true;
if (scitani) {
answer = number1 + number2;
if (answer == (int) answer) {
ansF.setText(String.valueOf((int) answer));
} else
ansF.setText(String.valueOf(answer));
}
if (odcitani) {
answer = number1 - number2;
if (answer == (int) answer) {
ansF.setText(String.valueOf((int) answer));
} else
ansF.setText(String.valueOf(answer));
}
if (nasobeni) {
answer = number1 * number2;
if (answer == (int) answer) {
ansF.setText(String.valueOf((int) answer));
} else
ansF.setText(String.valueOf(answer));
}
if (deleni) {
answer = number1 / number2;
if (number2 == 0) {
JOptionPane.showMessageDialog(a,
"Nulou dělit nelze!!!", "Chyba",
JOptionPane.INFORMATION_MESSAGE);
}
}
if (number2 != 0) {
if (answer == (int) answer) {
ansF.setText(String.valueOf((int) answer));
} else
ansF.setText(String.valueOf(answer));
}
bD.setBackground(null);
bK.setBackground(null);
bM.setBackground(null);
bP.setBackground(null);
number1 = 0;
number2 = 0;
deleni = false;
scitani = false;
odcitani = false;
nasobeni = false;
}
});
bMP.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
pNums.add((Double.parseDouble(String.valueOf(ansF.getText()))));
actConfirmed = true;
}
});
bMM.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
pNums.add(-(Double.parseDouble(String.valueOf(ansF.getText()))));
actConfirmed = true;
}
});
bMRC.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
for (int i = 0; i < pNums.size(); i++) {
pSouc += pNums.get(i);
}
for (int x = 0; x < mNums.size(); x++) {
mSouc += mNums.get(x);
}
answer = pSouc + mSouc;
if (answer == (int) answer) {
ansF.setText(String.valueOf((int) answer));
} else
ansF.setText(String.valueOf(answer));
pNums.clear();
mNums.clear();
}
});
}
// Hlavní metoda
public static void main(String[] args) {
a = new App();
}
}
Odpovídá na Kit
Silvinios:28.12.2013 18:36
Silvinios:28.12.2013 18:36
Jak kdy. Do pole lze na rozdíl od listu ukládat primitivní typy a tam už může být rozdíl ve výkonu celkem znát.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.
Zobrazeno 12 zpráv z 12.