คลาสจำลองหุ้นและคำนวณการเปลี่ยนแปลงราคา
โจทย์
เขียนคลาส Java ชื่อ Stock เพื่อแทนหุ้น คลาสควรมีคุณสมบัติดังนี้:
- แอตทริบิวต์ (หรือฟิลด์ข้อมูล)
- แอตทริบิวต์ชนิด String ชื่อ “symbol” สำหรับสัญลักษณ์ของหุ้น
- แอตทริบิวต์ชนิด String ชื่อ “name” สำหรับชื่อของหุ้น
- ฟิลด์ข้อมูลชนิด double ชื่อ “previousClosingPrice” ที่เก็บราคาหุ้นของวันก่อนหน้า
- ฟิลด์ข้อมูลชนิด double ชื่อ “currentPrice” ที่เก็บราคาหุ้นปัจจุบัน
- เมธอด
- double getChangePercent() ที่ส่งคืนเปอร์เซ็นต์การเปลี่ยนแปลงจาก previousClosingPrice ไปยัง currentPrice
- double setPreviousClosingPrice(double oldPrice) ที่อัปเดตราคาปิดก่อนหน้าด้วยค่าที่ระบุ
- double setCurrentPrice(double newPrice) ที่อัปเดตราคาปัจจุบันด้วยค่าที่ระบุ
| Input | Output |
|---|---|
| ORCL Oracle Corporation 34.5 34.35 | Stock name: Oracle Corporation Stock symbol: ORCL Price-change percentage: -0.43% |
โค้ดเริ่มต้น
public class StockDriver {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String symbol = sc.nextLine();
String name = sc.nextLine();
Stock s = new Stock(symbol, name);
double previousPrice = sc.nextDouble();
double currentPrice = sc.nextDouble();
s.setPreviousClosingPrice(previousPrice);
s.setCurrentPrice(currentPrice);
System.out.println("Stock name: " + s.name);
System.out.println("Stock symbol: " + s.symbol);
System.out.printf("Price-change percentage: %.2f%%", s.getChangePercent());
}
}
class Stock {
// Write your code here
// Constructor - DO NOT CHANGE HERE
Stock(String newSymbol, String newName){
symbol = newSymbol;
name = newName;
}
// Write your code here
}โค้ด
import java.util.Scanner;
public class StockDriver {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String symbol = sc.nextLine();
String name = sc.nextLine();
Stock s = new Stock(symbol, name);
double previousPrice = sc.nextDouble();
double currentPrice = sc.nextDouble();
s.setPreviousClosingPrice(previousPrice);
s.setCurrentPrice(currentPrice);
System.out.println("Stock name: " + s.name);
System.out.println("Stock symbol: " + s.symbol);
System.out.printf("Price-change percentage: %.2f%%", s.getChangePercent());
}
}
class Stock {
String symbol;
String name;
double previousClosingPrice;
double currentPrice;
// Constructor - DO NOT CHANGE HERE
Stock(String newSymbol, String newName){
symbol = newSymbol;
name = newName;
}
double getChangePercent() {
return ((currentPrice - previousClosingPrice) / previousClosingPrice) * 100;
}
void setPreviousClosingPrice(double oldPrice) {
previousClosingPrice = oldPrice;
}
void setCurrentPrice(double newPrice) {
currentPrice = newPrice;
}
}ส่วนประกอบของคลาส
1. ตัวแปร (Attributes หรือ Data Fields)
String symbol;
String name;
double previousClosingPrice;
double currentPrice;symbol: สัญลักษณ์ของหุ้น (เป็นข้อความ)name: ชื่อของหุ้น (เป็นข้อความ)previousClosingPrice: ราคาปิดของหุ้นในวันก่อนหน้า (เป็นตัวเลขทศนิยม)currentPrice: ราคาปัจจุบันของหุ้น (เป็นตัวเลขทศนิยม)
2. คอนสตรักเตอร์ (Constructor)
Stock(String newSymbol, String newName){
symbol = newSymbol;
name = newName;
}- ใช้สำหรับสร้างวัตถุ Stock ใหม่
- รับค่าสัญลักษณ์และชื่อของหุ้นเป็นพารามิเตอร์
- กำหนดค่าให้กับตัวแปร
symbolและname
3. เมธอดคำนวณเปอร์เซ็นต์การเปลี่ยนแปลงของราคา
double getChangePercent() {
return ((currentPrice - previousClosingPrice) / previousClosingPrice) * 100;
}- คำนวณและส่งคืนเปอร์เซ็นต์การเปลี่ยนแปลงของราคาหุ้น
- ใช้สูตร: ((ราคาปัจจุบัน - ราคาปิดก่อนหน้า) / ราคาปิดก่อนหน้า) * 100
4. เมธอดตั้งค่าราคาปิดก่อนหน้า
void setPreviousClosingPrice(double oldPrice) {
previousClosingPrice = oldPrice;
}- ใช้สำหรับกำหนดราคาปิดของหุ้นในวันก่อนหน้า
- รับค่าราคาเป็นพารามิเตอร์และกำหนดให้กับตัวแปร
previousClosingPrice
5. เมธอดตั้งค่าราคาปัจจุบัน
void setCurrentPrice(double newPrice) {
currentPrice = newPrice;
}- ใช้สำหรับกำหนดราคาปัจจุบันของหุ้น
- รับค่าราคาเป็นพารามิเตอร์และกำหนดให้กับตัวแปร
currentPrice
ปรับปรุงล่าสุด