คำตอบที่ได้รับเลือกจากเจ้าของกระทู้
ความคิดเห็นที่ 1
ลองดูครับผมทำ minimum กับ maximum ละ ส่วน average ลองหัดทำดูนะครับ อธิบายให้คร่าวๆคือ
คุณไป get ค่าใน array ที่ไม่ใช่ -1 ออกมาว่ามีกี่ตัวแล้วเก็บค่าไว้ (ลองดูจากที่ผมทำใน maximum กับ minimum) แล้ว
นำค่าที่ไม่ใช่ -1 บวกกับให้หมด แล้วหารด้วยจำนวนที่เก็บไว้เมือ่กี้จะได้ average มาลองๆหัดทำดูครับ
ปล.ทำไมโปรแกรมเปิดมาแล้วมันจอขาวหว่าต้องขยายแล้วย่อถึงขึ้น
ปล2.ตัวแปรที่เก็บค่า score ไม่ควรเป็น String นะครับ
ปล3.ไปดักเออเร่อเองนะ กรณี score ใส่เป็น String มันจะเกิด exception
ปล4.อันนี้ผมเขียน code แบบของผมนะ อาจจะลักไก่หรือเขียนไม่ค่อยสวยขออภัยด้วยผมก็เป็น นศ.เรียนอยู่เหมือนกัน
งงตรงไหนโพสไว้เด่วมาตอบให้คับ ผมก็แกะ code คุณอยู่ซักพักเหมือนกัน
[Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Arrays;
import java.util.Collections;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class student extends JFrame implements ActionListener {
private static int currentDataIndex = 0;
private String code[] = new String[40];
private String names[] = new String[40];
private int scores[] = new int[40];
/****************/
private static final long serialVersionUID = 1L;
private JLabel student, name, score;
private JTextField scode, sname, sscore;
private JFrame window;
private JButton Btn1, Btn2, Btn3;
private JButton minscore, maxscore, averagescore;
private JTextArea areas;
private int count = 0;
/****/
private JLabel Mins, Maxs, Avers;
private JTextField Mintf, Maxtf, Avertf;
/***/
public student() {
Arrays.fill(scores, -1);
window = new JFrame("Programm Student | KMUTNB PRACHINBURI CAMPUS");
window.setSize(480, 573);
window.setVisible(true);
window.setBounds(200, 200, 474, 573);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
buildpanel();
}
private void buildpanel() {
// จัดรูปแบบ layout แบบ Absolute
Container c = window.getContentPane();
c.setLayout(null);
student = new JLabel("Enter Student code : ");
student.setBounds(40, 10, 500, 30);
scode = new JTextField();
scode.setBounds(170, 13, 140, 26);
/****/
name = new JLabel("Enter Student name : ");
name.setBounds(40, 40, 500, 30);
sname = new JTextField();
sname.setBounds(170, 45, 250, 26);
/****/
score = new JLabel("Enter Student score : ");
score.setBounds(40, 70, 500, 30);
sscore = new JTextField();
sscore.setBounds(170, 75, 140, 26);
/****/
Btn1 = new JButton("Add data");
Btn1.setBounds(60, 106, 100, 30);
Btn1.addActionListener(this);
Btn2 = new JButton("Clear data");
Btn2.setBounds(180, 106, 100, 30);
Btn2.addActionListener(this);
Btn3 = new JButton("Show Record");
Btn3.setBounds(300, 106, 120, 30);
Btn3.addActionListener(this);
/****/
areas = new JTextArea();
areas.setBounds(10, 146, 440, 210);
areas.setEditable(false); // setไม่ให้พิมพ์ข้อความได้
/****/
minscore = new JButton("Minimum Score");
minscore.setBounds(10, 365, 140, 30);
minscore.addActionListener(this);
maxscore = new JButton("Maximum Score");
maxscore.setBounds(160, 365, 150, 30);
maxscore.addActionListener(this);
averagescore = new JButton("Average Score");
averagescore.setBounds(320, 365, 130, 30);
averagescore.addActionListener(this);
/****/
Mins = new JLabel("Minimum Score : ");
Mins.setBounds(40, 400, 120, 30);
Mintf = new JTextField();
Mintf.setBounds(150, 400, 270, 30);
/***/
Maxs = new JLabel("Maximum Score : ");
Maxs.setBounds(40, 434, 120, 30);
Maxtf = new JTextField();
Maxtf.setBounds(150, 435, 270, 30);
/***/
Avers = new JLabel("Average Score : ");
Avers.setBounds(40, 470, 120, 30);
Avertf = new JTextField();
Avertf.setBounds(150, 470, 170, 30);
// เพิ่มลง container
c.add(student);
c.add(scode);
c.add(name);
c.add(sname);
c.add(score);
c.add(sscore);
c.add(Btn1);
c.add(Btn2);
c.add(Btn3);
c.add(areas);
c.add(minscore);
c.add(maxscore);
c.add(averagescore);
c.add(Mins);
c.add(Mintf);
c.add(Maxs);
c.add(Maxtf);
c.add(Avers);
c.add(Avertf);
/****/
}
public void addData() {
String output = "";
code[currentDataIndex] = scode.getText();
names[currentDataIndex] = sname.getText();
scores[currentDataIndex] = Integer.parseInt(sscore.getText());
output = output + code[currentDataIndex] + " " + names[currentDataIndex] + " "
+ scores[currentDataIndex] + "\n";
areas.append(output);
++currentDataIndex;
}
public void clearData() {
areas.setText("");
currentDataIndex = 0;
code[count] = "";
names[count] = "";
scores[count] = -1;
}
public void minimum() {
int[] arrayTemp = scores;
for (int i = 0; i < arrayTemp.length; i++) {
if (scores != -1) {
arrayTemp = scores;
}
}
Arrays.sort(arrayTemp);
for (int i = 0; i < arrayTemp.length; i++) {
if (arrayTemp != -1) {
Mintf.setText(arrayTemp + "");
break;
}
}
// System.out.println(Arrays.toString(arrayTemp));
// Mintf.setText(arrayTemp[0] + "");
}
public void maximum() {
/*
* int a = 0; int s = Integer.parseInt(scores[0]); for(int
* i=0;i<count;i++) { if(Integer.parseInt(scores)> s) { a =
* Integer.parseInt(scores); } } String strIs = Integer.toString(a);
* Maxtf.setText(strIs);
*/
Integer[] arrayTemp = new Integer[scores.length];
for (int i = 0; i < arrayTemp.length; i++) {
arrayTemp = Integer.valueOf(scores);
}
for (int i = 0; i < arrayTemp.length; i++) {
if (scores != -1) {
arrayTemp = scores;
}
}
// Arrays.sort(arrayTemp);
Arrays.sort(arrayTemp, Collections.reverseOrder());
Maxtf.setText(arrayTemp[0] + "");
}
public static void main(String[] args) {
new student();
}
public void actionPerformed(ActionEvent event) {
if (event.getSource() == Btn1) {
addData();
} else if (event.getSource() == Btn2) {
clearData();
} else if (event.getSource() == Btn3) {
JOptionPane.showMessageDialog(null, "Student Record : " + count, "Message",
JOptionPane.INFORMATION_MESSAGE);
} else if (event.getSource() == minscore) {
minimum();
} else if (event.getSource() == maxscore) {
maximum();
} else if (event.getSource() == averagescore) {
}
}
}
คุณไป get ค่าใน array ที่ไม่ใช่ -1 ออกมาว่ามีกี่ตัวแล้วเก็บค่าไว้ (ลองดูจากที่ผมทำใน maximum กับ minimum) แล้ว
นำค่าที่ไม่ใช่ -1 บวกกับให้หมด แล้วหารด้วยจำนวนที่เก็บไว้เมือ่กี้จะได้ average มาลองๆหัดทำดูครับ
ปล.ทำไมโปรแกรมเปิดมาแล้วมันจอขาวหว่าต้องขยายแล้วย่อถึงขึ้น
ปล2.ตัวแปรที่เก็บค่า score ไม่ควรเป็น String นะครับ
ปล3.ไปดักเออเร่อเองนะ กรณี score ใส่เป็น String มันจะเกิด exception
ปล4.อันนี้ผมเขียน code แบบของผมนะ อาจจะลักไก่หรือเขียนไม่ค่อยสวยขออภัยด้วยผมก็เป็น นศ.เรียนอยู่เหมือนกัน
งงตรงไหนโพสไว้เด่วมาตอบให้คับ ผมก็แกะ code คุณอยู่ซักพักเหมือนกัน
[Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Arrays;
import java.util.Collections;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class student extends JFrame implements ActionListener {
private static int currentDataIndex = 0;
private String code[] = new String[40];
private String names[] = new String[40];
private int scores[] = new int[40];
/****************/
private static final long serialVersionUID = 1L;
private JLabel student, name, score;
private JTextField scode, sname, sscore;
private JFrame window;
private JButton Btn1, Btn2, Btn3;
private JButton minscore, maxscore, averagescore;
private JTextArea areas;
private int count = 0;
/****/
private JLabel Mins, Maxs, Avers;
private JTextField Mintf, Maxtf, Avertf;
/***/
public student() {
Arrays.fill(scores, -1);
window = new JFrame("Programm Student | KMUTNB PRACHINBURI CAMPUS");
window.setSize(480, 573);
window.setVisible(true);
window.setBounds(200, 200, 474, 573);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
buildpanel();
}
private void buildpanel() {
// จัดรูปแบบ layout แบบ Absolute
Container c = window.getContentPane();
c.setLayout(null);
student = new JLabel("Enter Student code : ");
student.setBounds(40, 10, 500, 30);
scode = new JTextField();
scode.setBounds(170, 13, 140, 26);
/****/
name = new JLabel("Enter Student name : ");
name.setBounds(40, 40, 500, 30);
sname = new JTextField();
sname.setBounds(170, 45, 250, 26);
/****/
score = new JLabel("Enter Student score : ");
score.setBounds(40, 70, 500, 30);
sscore = new JTextField();
sscore.setBounds(170, 75, 140, 26);
/****/
Btn1 = new JButton("Add data");
Btn1.setBounds(60, 106, 100, 30);
Btn1.addActionListener(this);
Btn2 = new JButton("Clear data");
Btn2.setBounds(180, 106, 100, 30);
Btn2.addActionListener(this);
Btn3 = new JButton("Show Record");
Btn3.setBounds(300, 106, 120, 30);
Btn3.addActionListener(this);
/****/
areas = new JTextArea();
areas.setBounds(10, 146, 440, 210);
areas.setEditable(false); // setไม่ให้พิมพ์ข้อความได้
/****/
minscore = new JButton("Minimum Score");
minscore.setBounds(10, 365, 140, 30);
minscore.addActionListener(this);
maxscore = new JButton("Maximum Score");
maxscore.setBounds(160, 365, 150, 30);
maxscore.addActionListener(this);
averagescore = new JButton("Average Score");
averagescore.setBounds(320, 365, 130, 30);
averagescore.addActionListener(this);
/****/
Mins = new JLabel("Minimum Score : ");
Mins.setBounds(40, 400, 120, 30);
Mintf = new JTextField();
Mintf.setBounds(150, 400, 270, 30);
/***/
Maxs = new JLabel("Maximum Score : ");
Maxs.setBounds(40, 434, 120, 30);
Maxtf = new JTextField();
Maxtf.setBounds(150, 435, 270, 30);
/***/
Avers = new JLabel("Average Score : ");
Avers.setBounds(40, 470, 120, 30);
Avertf = new JTextField();
Avertf.setBounds(150, 470, 170, 30);
// เพิ่มลง container
c.add(student);
c.add(scode);
c.add(name);
c.add(sname);
c.add(score);
c.add(sscore);
c.add(Btn1);
c.add(Btn2);
c.add(Btn3);
c.add(areas);
c.add(minscore);
c.add(maxscore);
c.add(averagescore);
c.add(Mins);
c.add(Mintf);
c.add(Maxs);
c.add(Maxtf);
c.add(Avers);
c.add(Avertf);
/****/
}
public void addData() {
String output = "";
code[currentDataIndex] = scode.getText();
names[currentDataIndex] = sname.getText();
scores[currentDataIndex] = Integer.parseInt(sscore.getText());
output = output + code[currentDataIndex] + " " + names[currentDataIndex] + " "
+ scores[currentDataIndex] + "\n";
areas.append(output);
++currentDataIndex;
}
public void clearData() {
areas.setText("");
currentDataIndex = 0;
code[count] = "";
names[count] = "";
scores[count] = -1;
}
public void minimum() {
int[] arrayTemp = scores;
for (int i = 0; i < arrayTemp.length; i++) {
if (scores != -1) {
arrayTemp = scores;
}
}
Arrays.sort(arrayTemp);
for (int i = 0; i < arrayTemp.length; i++) {
if (arrayTemp != -1) {
Mintf.setText(arrayTemp + "");
break;
}
}
// System.out.println(Arrays.toString(arrayTemp));
// Mintf.setText(arrayTemp[0] + "");
}
public void maximum() {
/*
* int a = 0; int s = Integer.parseInt(scores[0]); for(int
* i=0;i<count;i++) { if(Integer.parseInt(scores)> s) { a =
* Integer.parseInt(scores); } } String strIs = Integer.toString(a);
* Maxtf.setText(strIs);
*/
Integer[] arrayTemp = new Integer[scores.length];
for (int i = 0; i < arrayTemp.length; i++) {
arrayTemp = Integer.valueOf(scores);
}
for (int i = 0; i < arrayTemp.length; i++) {
if (scores != -1) {
arrayTemp = scores;
}
}
// Arrays.sort(arrayTemp);
Arrays.sort(arrayTemp, Collections.reverseOrder());
Maxtf.setText(arrayTemp[0] + "");
}
public static void main(String[] args) {
new student();
}
public void actionPerformed(ActionEvent event) {
if (event.getSource() == Btn1) {
addData();
} else if (event.getSource() == Btn2) {
clearData();
} else if (event.getSource() == Btn3) {
JOptionPane.showMessageDialog(null, "Student Record : " + count, "Message",
JOptionPane.INFORMATION_MESSAGE);
} else if (event.getSource() == minscore) {
minimum();
} else if (event.getSource() == maxscore) {
maximum();
} else if (event.getSource() == averagescore) {
}
}
}
▼ กำลังโหลดข้อมูล... ▼
แสดงความคิดเห็น
คุณสามารถแสดงความคิดเห็นกับกระทู้นี้ได้ด้วยการเข้าสู่ระบบ
กระทู้ที่คุณอาจสนใจ
อ่านกระทู้อื่นที่พูดคุยเกี่ยวกับ
Java
การพัฒนาซอฟต์แวร์
การพัฒนา Desktop Application
วิทยาศาสตร์คอมพิวเตอร์
ซอฟต์แวร์
[ปัญหาภาคต่อจากกระทู้ก่อนหน้า] รบกวนสอบถามครับ พอดีผมต้องการจะทำให้มันเช็คค่าน้อยและมากจาก Array ผมต้องทำอย่างไรครับ
(ไว้สำหรับคนที่ประสบปัญหาแบบผม)
ผมต้องการเอาคะแนนไปเปรียบเทียบและนำไปลงในช่อง Jtextfield ครับ
ทีนี้ผมได้ลองพยายามเขียน code แล้ว แก้โค๊ดก็แล้ว แต่ไม่เป็นผลเลยครับ
อยากจะให้พี่ๆช่วยแนะแนวทางให้ครับ
ขอบพระคุณครับ
อยู่ใน method maximum และ minimum ครับ
code ทั้งหมด
[Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้