Skip to Content
CoursesCSC102คลาสจำลองหุ้นและคำนวณการเปลี่ยนแปลงราคา

คลาสจำลองหุ้นและคำนวณการเปลี่ยนแปลงราคา

โจทย์

เขียนคลาส Java ชื่อ Stock เพื่อแทนหุ้น คลาสควรมีคุณสมบัติดังนี้:

  • แอตทริบิวต์ (หรือฟิลด์ข้อมูล)
  • แอตทริบิวต์ชนิด String ชื่อ “symbol” สำหรับสัญลักษณ์ของหุ้น
  • แอตทริบิวต์ชนิด String ชื่อ “name” สำหรับชื่อของหุ้น
  • ฟิลด์ข้อมูลชนิด double ชื่อ “previousClosingPrice” ที่เก็บราคาหุ้นของวันก่อนหน้า
  • ฟิลด์ข้อมูลชนิด double ชื่อ “currentPrice” ที่เก็บราคาหุ้นปัจจุบัน
  • เมธอด
  • double getChangePercent() ที่ส่งคืนเปอร์เซ็นต์การเปลี่ยนแปลงจาก previousClosingPrice ไปยัง currentPrice
  • double setPreviousClosingPrice(double oldPrice) ที่อัปเดตราคาปิดก่อนหน้าด้วยค่าที่ระบุ
  • double setCurrentPrice(double newPrice) ที่อัปเดตราคาปัจจุบันด้วยค่าที่ระบุ
InputOutput
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
ปรับปรุงล่าสุด