Oop lab/java1

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา
หน้านี้เป็นส่วนหนึ่งของ oop lab

หน้านี้รวมแบบฝึกหัดการเขียนโปรแกรมภาษา Java เบื้องต้น เพื่อทบทวนการเขียนโปรแกรม นอกจากนี้จะได้ลองใช้ JUnit ด้วย

ในการทดลองเขียน (ยกเว้นข้อแรก) สามารถใส่ทุกอย่างไว้ใน project เดียวกันได้ (เช่นอาจจะใช้ชื่อว่า lab1practice) เพื่อไม่ให้ IDE เละไปด้วย project ที่หัดเขียน แต่ให้แยก class กัน โดยสั่ง new class และ new JUnit test case ประกบกันไป โดยให้ใช้ชื่อ class ตามที่ระบุในโจทย์

เกมทายเลข

  • จากในคลิป ให้แก้โปรแกรมให้โปรแกรมพิมพ์หมายเลขรอบที่ทายด้วย เช่นในรูปนี้
Round 1
10
Too low
Round 2
55
Too high

หมายเหตุ: ในภาษา Java เราสามารถ "บวก" ตัวเลขเข้ากับสตริงได้ ตัวเลขจะถูกแปลงเป็นสตริงและนำไปต่อกับสตริงเดิม ดังนั้นเราสามารถพิมพ์แบบนี้ได้

    System.out.println("Round " + 1);
  • ถ้าทายน้อยกว่า 5 ครั้ง ให้พิมพ์ตอนท้ายด้วยว่าเก่งมาก

ทดลองฟังก์ชัน abs

จากในคลิป ทดลองเขียนฟังก์ชัน abs ในคลาส MyMath และลองรัน JUnit test ด้านล่าง โดยโค้ดด้านล่างเป็นไฟล์เกือบทั้งหมด ให้ตัดไปเฉพาะส่วนที่เป็นโค้ดที่จะใช้

public class MyMath {
	
	public static int abs(int x) {
		// put your code here
	}

}
import static org.junit.Assert.*;

import org.junit.Test;

public class MyMathTest {

	@Test
	public void testAbsZero() {
		assertEquals(0, MyMath.abs(0));
	}

	@Test
	public void testAbsPositive() {
		assertEquals(100, MyMath.abs(100));
	}

	@Test
	public void testAbsNegative() {
		assertEquals(50, MyMath.abs(-50));
	}
}

ลดราคาสมาชิก

มัธยฐานของเลข 3 ตัว

เขียนเมท็อด Median3.median ที่รับจำนวนเต็มสามจำนวนแล้วคืนค่ามัธยฐานของเลขสามตัวนั้น

public class Median3 {
	public static int median(int a, int b, int c) {
		return 0;
	}
}
public class Median3Test {

	@Test
	public void testDistinctIntegers() {
		assertEquals(2, Median3.median(1,2,3));
		assertEquals(2, Median3.median(3,2,1));
		assertEquals(2, Median3.median(1,3,2));
		assertEquals(2, Median3.median(3,1,2));
	}

	@Test
	public void testWithNegativeIntegers() {
		assertEquals(2, Median3.median(-1,2,3));
		assertEquals(1, Median3.median(3,-2,1));
		assertEquals(-2, Median3.median(1,-3,-2));
		assertEquals(-1, Median3.median(3,-1,-2));
	}
	
	@Test
	public void testDuplicates() {
		assertEquals(2, Median3.median(2,2,1));
		assertEquals(1, Median3.median(1,3,1));
		assertEquals(-1, Median3.median(3,-1,-1));
	}

	@Test
	public void testAllEqual() {
		assertEquals(2, Median3.median(2,2,2));
		assertEquals(-1, Median3.median(-1,-1,-1));
		assertEquals(0, Median3.median(0,0,0));
	}
}

ทดสอบจำนวนเฉพาะ

ค่าสูงสุด

เรียงกันหรือเปล่า?

นับคู่เรียงผิด