บทที่ 4. ตัวดําเนินการ...

Preview:

Citation preview

บทที ่4. ตวัดําเนินการ(Operators)

อาจารย นัฐพงศ สงเนียมhttp://www.siam2dev.comsiam2dev@hotmail.comxnattapong@hotmail.com

Lec04_Operators_Last_Updated_24_12_2560.pdf

Reviews/ทบทวนเนือ้หา

• ชนิดขอมูลพืน้ฐาน Primitive DataType

• Keywords

• ขอกําหนดในการต้ังชื่อ

• การประกาศตัวแปร

Primitive Type

ชนิดขอมูลมีทั้งหมด 8 ชนิดดวยกัน และแบงเปน 4 กลุมดวยกนัคือ

• จํานวนเต็ม สวนใหญใชเก็บขอมูลจํานวนเต็ม ไดแก byte, short, int ,long

• จํานวนจริง ใชเก็บขอมูลที่เปนจุดทศนิยม ไดแก float, double

• ขอมูลตัวอักษร ใชเก็บขอมูลที่เปนตัวอักษร ไดแก char

• ขอมูลแบบบลูีน เปนชนดิตรรกศาสตรไดแก boolean

Primitive Type

การประกาศตวัแปรรูปแบบ

ชนิดของตัวแปร ชือ่ตัวแปร;

เชน

- int number;

- long a2z;

- short num;

- char ch;

- double mm;

การตั้งช่ือในภาษา Java (2)

ตัวอยางการตั้งชื่อท่ีถูกตองและไมถูกตอง

- int a2z;

- long a2z;

- short 1a;

- int a$4;

- int _char;

- int while ;

- int x,X ;

// ถูกตอง// ไมถูกตองเพราะช่ือซ้ํากบัขางบน// ไมถูกตองเพราะขึ้นตนดวยตัวเลข

// ถูกตอง// ถูกตองเพราะขึ้นตนดวย _// ไมถูกตองเพราะเปนคําสงวน

// ถูกตอง

Agenda

Operators Casting การรับขอมูลทางหนาจอ

String ลําดับความสําคัญของ operators

Precedence of Operators

Term and Expression

ตัวดําเนนิการ Operator

Operator คือสัญลักษณ หรอื keywords ที่ใชสําหรับนําคามา

คํานวณบางอยางใหไดเปนผลลัพธ ซึ่งจะเรยีกอินพุตของ operator วา

operand

Unary Operator ใช operand 1 ตัว

◦ Pre-fix เชน --y , ++x

◦ Post-fix เชน y-- , x++

Binary Operator ใช operand 2 ตัว เชน a + b , x / y , a = 5

Term and Expression

Term คือคาหน่ึงคา อาจจะเปนคาคงที่ หรือ คาที่อยูในตัวแปร

Expression คือหนวยของโปรแกรมที่สามารถคํานวณออกมาเปน

คาคาหน่ึง ซึ่งอาจจะเปน term เดียว ๆ หรือประกอบขึ้นจากหลาย ๆ

term และ operator

7 X

X + 7Math.sqrt(X)

Y - Math.sqrt(X)A+b-5/2*4/6+7

ตวัอยา่ง เชน่

Term

Term

Expression

Operator กลุมตาง ๆ Assignment Operators

◦ สําหรับกําหนดคา โดยใช operator =

Arithmetic Operators

◦ สําหรับการคํานวณทางคณิตศาสตร

Bit-wise Operators

◦ สําหรับกระทํากับ bits ของเลขจํานวนเต็ม

Relational Operators

◦ สําหรับการเปรียบเทียบ ใหผลลัพธเปนคา boolean

Logical Operators

◦ สําหรับใชกระทํากับขอมูลชนิด boolean

Conditional Operators

◦ สําหรับเปรียบเทียบแลวตัดสินใจทําประโยคที่กําหนดให

Assignment Operators

ภาษา Java มี operators = สําหรับทําการกําหนดคา (assignment)

รูปแบบคําสั่ง

variable = [constance|expression];

ExampleX = ( a * a + 4.0 * b ) / 2.0;Y = 5;MyClass.name = “alovela”;

ทดสอบโปรแกรม

class TestOperator1{public static void main(String [] args){ int x ,y ,z ;x = y = z = 1;System.out.println(x + "," + y +"," + z );x = (y = (z = z + 1 )+ 1 )+ 1;System.out.println(x + "," + y +"," + z );x = (y = 1) + (z = 1) ;System.out.println(x + "," + y +"," + z );//x = y = 1 + z = 1 ;

}}

การสรางประโยคและการประมวลผลแบบเรียงลําดับ

class Test_Opt03 {public static void main(String[] args) {

double a, b, c;a = 1 + (Math.random() * 10);b = 1 + (Math.random() * 10);System.out.println("a = " + a + " and b = " + b);c = a + b; System.out.println("a + b = " + c);c = a - b; System.out.println("a - b = " + c);c = a * b; System.out.println("a * b = " + c);c = a / b; System.out.println("a / b = " + c);c = a % b; System.out.println("a % b = " + c);}

}

Arithmetic Operators

Operators ใชสําหรับการคํานวณทางคณิตศาสตร ซึ่งจะมี

Operands และผลลัพธเปนตัวเลข จํานวนเต็มหรือทศนิยมก็ได แบงเปน

4 ประเภทคือ

Integer Arithmetic Operators

Floating-point Arithmetic Operators

Arithmetic Assignment Operators

Increment and Decrement Operators

Integer Arithmetic Operators

Floating-point Arithmetic Operators

Integer Arithmetic Operators ไดแก + (บวก), - (ลบ), *

(คูณ), / (หาร) และ % (modulus) ที่ใชกระทํากบัเลขจํานวน

เต็มและจะไดผลลัพธเปนเลขจํานวนเต็ม

Floating-point Arithmetic Operators ไดแก + (บวก), -

(ลบ), * (คูณ), / (หาร) และ % (modulus) ที่ใชกระทํากับเลข

จํานวนทศนยิมและจะไดผลลัพธเปนเลขทศนิยม

ตัวดําเนินการคณิตศาสตร (Arithmetic Operators)

Opt Integer Output Float Output

+ + 1 1 + 1.0 1.0

- - 2 -2 – 2.0 -2.0

ตัวดําเนินการเด่ียว(unary operator)

ตัวดําเนินการคณิตศาสตร (Arithmatic Operators)

Opt Integer Output Float Output

+ 1 + 2 3 1.0 + 2.0 3.0

- 2 - 3 -1 2.0 – 3.0 -1.0

* 3 * 4 12 3.0 * 4.0 12.0

/ 24 / 5 4 24.0 / 5.0 4.8

% 16 % 7 2 16.0 % 7.0 2.0

ตัวดําเนินการคู(binary operator)

ทดสอบโปรแกรม

System.out.println(1 + 2);…………System.out.println(2 - 3);………..System.out.println(3 * 4);System.out.println(6 % 7);

System.out.println(1.0 + 2.0);System.out.println(2.0 - 3.0);System.out.println(3.0 * 4.0);System.out.println(6.0 % 7.0);

System.out.println(2.0 - 3);System.out.println(3 * 4.0);

Arithmetic Assignment Operators

Operator ที่ใชคาของตัวแปรตัวหน่ึงมากระทํากับ operand แลว

เก็บผลลัพธไวที่ตัวแปรตัวน้ัน โดยมีรูปแบบประโยคดังน้ี

<variable> <op> = <operand>;

Example

X += 1; // X = X + 1Y -= 5; // Y = Y - 5X /= 4; // X = X / 4

Arithmatic Assignment Operators

op Form Meaning

+= x += y x = x + y

-= x -= y x = x – y

*= x *= y x = x * y

/= x /= y x = x / y

%= x %= y x = x % y

ทดสอบโปรแกรม

int x = 1;x += 1; System.out.println(x);x *= 2; System.out.println(x);x -= 3; System.out.println(x);x /= 4; System.out.println(x);float y = 1f;y += 1; System.out.println(y);y *= 2; System.out.println(y);y -= 3; System.out.println(y);y /= 4; System.out.println(y);

Increment and Decrement Operators

Operators สําหรับใชในการเพิ่มคาหรือลดคาของตัวแปรทลีะ 1 เชน

++x; จะมีความหมายวา x = x + 1; และ

--x; จะมีความหมายวา x = x – 1;

มีวิธใีช 2 แบบคือ

1. ใชแบบ prefix เชน ++x จะทําการบวกหนึ่งใหแก x กอนแลวจงึสงผลลัพธออกมาเปนคาที่ไดจากการกระทํา

2. ใชแบบ posfix เชน x++ จะเก็บคา x ตอนนั้นไวกอน แลวจึงทําการบวกหนึ่ง แลวจงึสงคา x ที่ไดจากการกระทําออกมาเปนผลลัพธ

Increment and Decrement Operators

ตวัดําเนินการสําหรับเพิ่มคา่ ++

ตวัดําเนินการสําหรับลดคา่ --

int x = 10;int y;y = ++x;System.out.println(x);System.out.println(y);

int x = 10;int y;y = x++;System.out.println(x);System.out.println(y);

1111

1110

ทดสอบโปรแกรมint a, b, x = 1, y = 1 ;

a = x++; b = ++y;

System.out.println(a + "," + b);

a = x--; b = --y;

System.out.println(a + "," + b);

…………1 2………………………………………1 0………………………..

Bit-wise Operator

เปน Operator สําหรับกระทาํกับทุก ๆ bits ของ operands ที่เปน

ขอมูลเลขจํานวนเต็ม(ไดแก byte, short, int และ long) หรือเปน

ตัวอักษร char แบงออกเปน 2 กลุมคือ

Boolean Bit-wise Operators

Assignment Bit-wise Operators

การใชคําส่ังทางคณิตศาสตรทีจ่าวามีให

ตัวอยางในการหาคาสมการยกกําลังสอง (Quadratic Equation) ที่อยูในรูป ax2 + bx + c

= 0 ซึ่งคํานวณไดจากการใชสูตร

aacbbx

242

1−+−

=

aacbbx

242

2−−−

=

Boolean Bit-wise Operators

Op Meaning Example Result

~ Bitwise NOT ~(0110) 1001

& Bitwise AND 0011 & 0101 0001

| Bitwise OR 0011 | 0101 0111

^ Bitwise XOR 0011 ^ 0101 0110

<< Shift left 1011 << 2 1100

>> Shift right(sign bit) 1011 >> 2 1110

>>> Shift right(zero fill) 1011 >>> 2 0010

Assignment Bit-wise Operators

op Form Meaning

&= x &= y x = x & y

|= x |= y x = x | y

^= x ^= y x = x ^ y

<<= x <<= y x = x << y

>>= x >>= y x = x >> y

>>>= x >>>= y x = x >>> y

ทดสอบโปรแกรม

System.out.println(~2);

System.out.println(2&1);

System.out.println(2|1);

System.out.println(2<<1);

System.out.println(2<<2);

System.out.println(-4>>1);

System.out.println(-1>>>1);

Comparison Operators

ไดแก ==, !=, >, <, >=, <= ใชทําการเปรียบเทียบคาของ

operands ทีมีชนิดขอมูลเปน byte, char, short, int, long, float และ

double สําหรับชนิดขอมูล boolean จะทําการเปรียบเทียบเทากับ

หรือ ไมเทากับไดเทาน้ัน

ผลลัพธจากการเปรียบเทียบจะไดเปนคา boolean

ตัวดําเนินการเปรียบเทียบ(Comparison Operators)

Operator Meaning Example Result

> more than a > b false

< Less then a < b true

>= More than and equal a >= b false

<= Less than and equal a <= b true

== Equal a == b false

!= Not equal a != b true

int a = 0, b = 1;

Logical Operators

เปน operat0rs ที่ใชกับ operands ที่มีชนิดขอมูลเปน boolean

เทาน้ัน และใหผลลัพธเปน boolean แบงเปน 3 กลุม

Boolean Logical Operators

◦ ไดแก & (AND), | (OR), ^ (XOR), ! (NOT)

Short-circuit Logical Operators

◦ ไดแก && (short-circuit AND) , || (short-circuit OR)

Assignment Logical Operators

◦ ไดแก &= , |=, ^=

ตัวดําเนินการตรรกะ (Logical Operators)

Boolean Logical Operator& b = false & true false| b = false | true true^ b = false ^ true true! b = !true false

Short-circuit logical Operator&& b = false && true false|| b = true || true true

boolean b;

ทดสอบโปรแกรม

1. System.out.println(1<2 & 4==1);

2. System.out.println(1<2 | 4==1);

3. System.out.println(!true ^ 1==1);

4. System.out.println(!(4!=1));

• !(2==1) & (2 > 4) ……………False……….• (2==4) | (1 == 1) …………. True ……

Conditional Operators

Operators ? ใชรวมกับ : โดยมีรูปแบบดังน้ี

ถาคาของ <condition> เปน true คาที่ไดจะเปน <expression 1>

แตถาเปน false คาที่ไดจะเปน <expression 2>

เชน System.out.println((a<b)? "aนอยกวาb":"aมากกวาหรือเทากับb" );

(<condition>)? <expression 1> : <expression 2>;

ลําดับความสําคัญของ operators

Precedence of Operators[],(), op++, op--

++op,--p, +op, -op, ~, !

New, (type)op

*,/,%

+,-

<<,>>,>>>

<,>,>=,<=,instanceof

==,!=

&

^

|

&&

||

?:

=,+=,-=,*=,/=,%=,&=,^=,|=,<<=,>>=,>>>=

สาํคญัมาก

สาํคญันอ้ย

Associativity of Operators

ลําดบัการกระทําของ operators ท่ีมีลําดบัความสําคญัเท่ากนั มีทัง้การทําจากซ้ายไปขวา และขวาไปซ้าย เรียกวา่ associativityขึน้อยูก่บัชนิดของ operator เช่น

operators = มี associativity ทางขวา คือจะทําจากขวามาซ้าย เช่น

a = b = c = 1 ; ทํางานดงันี ้ a = (b = (c = 1))operators + , - มี associativity ทางซ้าย คือจะทําจากซ้ายมาขวา

a + b – c + d ; ทํางานดงันี ้ ((a + b) – c) + d

ทดสอบโปรแกรม

System.out.println(1 + 2 * 3 - 2);System.out.println((1 + 2) * (3 -2));System.out.println(2 * -5 - 17 % 3/ 2 + 26 * 2 + 4);

ทดลองใสว่งเล็บใหถ้กูตอ้งตามลําดบัของ Operator

การแปลงชนิดขอมูล (Type Conversions)

เมื่อตองการดําเนินการทางคณิตศาสตรระหวาง operands ทีม่ีชนิด

ขอมูลที่แตกตางกัน จะตองแปลงชนิดขอมูลใหเปนชนิดเดียวกันกอน แบง

การแปลงออกเปน 2 ประเภท คือ

Implicit type conversion

◦ เปนการแปลงชนดิขอมูลท่ีภาษาจาวาทําใหโดยอัตโนมัติตามความเหมาะสม

Explicit type conversion (หรือ Casting)

◦ เปนการแปลงชนดิขอมูลท่ีผูเขียนโปรแกรมตองทําดวยตนเอง

Implicit type conversion

Java จะทําการแปลงใหโดยอัตโนมัติOperand byte char short int long float double

byte int int int int long float double

char int int int int long float double

short int int int int long float double

int int int int int long float double

long long long long long long float double

float float float float float float float double

double double double double double double double double

ผลลัพธของการใชOperators รวมกัน Operand ชนิดตาง ๆ

Explicit type conversion (หรือ Casting)

เปนการแปลงชนิดขอมูลที่ผูเขยีนกําหนดเอง

รูปแบบ

เชน a = (int)(c + b);

*** ควร casting ชนิดขอมูลจากคาที่เล็กกวาไปเปนคาที่ใหญกวา เพ่ือลดการสูญหายของขอมูล

(<type>)<operand>

ชนิดข้อมูล ขนาด

ข้อมูล

double

float

long

int

short

byte

ขนาดใหญ่

ขนาดเลก็

ทดสอบโปรแกรม

float a = 1.0F, b = 2.5F;

int c;

double d;

d = a + b;

System.out.println("d = " + d);

c = (int)(a + b);

System.out.println("c = " + c);

Casting

• เปนการแปลงชนิดของขอมูล (Type) จากชนิดหนึง่เปนอีกชนิดหนึง่

• รูปแบบ คือ

(target_type)variable;

target_type หมายถึง ชนิดขอมูลของตัวแปรที่ใชเปนตัว

แปรปลายทาง

variable หมายถึง ตัวแปร

การ Casting (2)

- การแปลงจากชนิดขอมูลทีมี่ขนาดเล็กกวาไปเปนชนิดขอมูลที่มีขนาด

ใหญกวา

- การแปลงจากชนิดขอมูลที่มีขนาดที่ใหญกวาไปเปนชนิดขอมูลทีม่ีขนาดเล็ก

กวา

การ Casting (3)

public class Ex_cast{

public static void main(String args[]){

int n = 5; double m = 3.5;short p = (short)n;System.out.println((int)m);System.out.println((double)n ); System.out.println(p);

}}

3

5.0

5

การรับขอมลูดวยคลาส Scanner

คลาส Scanner อยูใน package java.util.Scanner จึงตองมีการ import กอน

จากนั้นทําการสรางวัตถุจากคลาส Scanner โดยมีรูปแบบดังนี้

Scanner keyboard = new Scanner(System.in);

ตัวอยางการใชงาน

int number;

Scanner keyboard = new Scanner(System.in);

System.out.print(“Enter an interger value: ”);

number = keyboard.nextInt();

เมธอดในคลาส Scanner

เมธอด การทํางาน

nextByte() รับขอมูลเลขจํานวนเต็มชนิด Byte ทางแปนพิมพ

nextDouble() รับขอมูลเลขทศนิยมชนิด Double ทางแปนพิมพ

nextFloat() รับขอมูลเลขทศนิยมชนิด Float ทางแปนพิมพ

nextInt() รับขอมูลเลขจํานวนเต็มชนิด Int ทางแปนพิมพ

nextLine() รับขอมูลแบบ String ทางแปนพิมพ

nextLong() รับขอมูลตัวเลขชนิด Long ทางแปนพิมพ

nextShort() รับขอมูลตัวเลขชนิด Short ทางแปนพิมพ

ทดสอบโปรแกรมรับขอมูลโดยใชคลาส Scanner

import java.util.Scanner; //เรยีกใชค้ลาส Scannerpublic class calnum {

public static void main(String[] args){int x,y; //ประกาศตัวแปร x และ y สําหรับเก็บเลขจํานวนเต็มScanner in = new Scanner(System.in); //สรา้งออบเจ็กต ์in สําหรับรับขอ้มลูSystem.out.print("Input Number 1 : ");x = in.nextInt(); //รับตัวเลขจํานวนเต็มมาเก็บในตัวแปร xSystem.out.print("Input Number 2 : ");y = in.nextInt(); //รับตัวเลขจํานวนเต็มมาเก็บในตัวแปร ySystem.out.println(x + " + " + y + " = " + (x+y) ); //แสดงผลการบวก

} }

ทดสอบการหาพื้นที่สามเหลี่ยม

import java.util.Scanner;public class FindTriangle {public static void main(String[] args) {

double height = 0 , base = 0 , result = 0;Scanner input = new Scanner(System.in);System.out.println("โปรแกรมหาพืน้ทีส่ามเหลีย่ม");

System.out.println("กรณุาป้อนความสงู "); height = input.nextDouble();

System.out.println("กรณุาป้อนความยาวฐาน "); base = input.nextDouble();

result = 0.5 * height * base;System.out.println("พืน้ทีส่ามเหลีย่ม = " + result );}

}

เครื่องหมายทางคณิตศาสตร

(Arithmetic Operators)

เคร่ืองหมาย ความหมาย ตวัอย่าง

+

-

*

/

%

การบวก

การลบ

การคูณ

การหาร

การหารเอาแต่

เศษ

x+y

x-y

x*y

x/y

x%y

ลาํดบัความสําคญัของตวัดาํเนินการ

ลาํดับที่ เคร่ืองหมาย

12345

( )++,--*, /, %+, -+=, -=, /=, %=

public class Ex_arit{

public static void main(String args[]){

int n = 6; int m = 34;

double p,q;p = m / n;q = m%n;System.out.println(n+m);System.out.println(n-m);System.out.println(n*m);System.out.println(p);System.out.println(q);System.out.println(m/n);System.out.println(m%n);

}}

40, -28, 204, 5.0, 4.0

การคํานวณแบบยอ

เคร่ืองหมาย ตวัอย่าง ความหมาย

+=-=*=/=

%=++

--

x+=5x-=5x*=5x/=5

x%=5x++++xx----x

x=x+5x=x-5x=x*5x=x/5

x=x%5x=x+1x=x+1x=x-1x=x-1

public class Ex_short{

public static void main(String args[]){

int n = 10,m = 5,o=4,p=15;n++; o = --o;m+=5; p *= 3;System.out.println(n);System.out.println(o);System.out.println(m);System.out.println(p);

}}

n = 11

o = 3

m = 10

p= 45

public class Ex_short{

public static void main(String args[]){

int n = 10,m = 5,o,p,q;n++; m+=5;

o = n*m;p = n*m++; q = n*++m;

System.out.println(n);System.out.println(m);System.out.println(o);System.out.println(p);System.out.println(q);

}} n = 11 , m = 12 , o = 110 , p= 110 ,q = 132

// n = 11// m = 10

// before m = 10 , after m = 11// m = 12

เครื่องหมายเปรียบเทียบ

เครื่องหมาย ความหมาย ตัวอยาง

>

>=

<

<=

==

!=

มากกวา

มากกวาหรือเทากับ

นอยกวา

นอยกวาหรือเทากับ

เทากับ

ไมเทากับ

x>y

x>=y

x<y

x<=y

x==y

x != y

เครื่องหมายตรรก (Logical Operators)

เคร่ืองหมาย && (AND)

เครื่องหมาย || (OR)

เครื่องหมาย ! (NOT)

public class Ex_double

{

public static void main(String args[])

{

int n = 5;

int m = 3;

System.out.println(n>m);

System.out.println(n<=m);

System.out.println(n>= m&&m<n);

System.out.println(!(n<=m || n<m));

}

true

false

true

true

String

เปน class หนึ่ง ใน Package ของ java ชื่อ java.lang ทํา

หนาที่ในการเก็บขอมูลที่เปน “ชุดของตัวอักษร” ซ่ึงสามารถเก็บ

ขอมูลไดมากกวา 1 ตัวอักษร

7.1 การสราง String มีหลายรูปแบบ แตที่ใชสะดวกคือ

การกําหนดคาลงไปในตัวแปร เชน String mess = “Gozzila”;

7.2 การใช Length เปนการหาความยาวของขอมูลที่

เก็บในตัวแปร ไดโดยใช Method ชือ่ “length()” เชน

int n = fname.length();

ตัวอยาง

class Ex_string

{

public static void main(String[] args)

{

String fname = “Kingdom";

int n = fname.length();

System.out.println(n);

}

}

String

7.3 การใช charAt เปนการหาคาของขอมูล ณ ตําแหนง

ตัวอักษรที่ระบุของขอมูลที่เก็บในตัวแปร ไดโดยใช Method ชื่อ

“charAt()” เชน

fname.charAt(4);

7.4 การใช toLowerCase เปนการเปล่ียนตัวอักษรใหเปนตัว

เล็กทั้งหมด ไดโดยใช Method ชื่อ “toLowerCase()” เชน

fname.toLowerCase();7.5 การใช toUpperCase เปนการเปล่ียนตัวอกัษรใหเปนตัว

ใหญทั้งหมด ไดโดยใช Method ชือ่ “toUpperCase()” เชน

fname.toUpperCase();

7.6 การใช Substring

เปนการดึงขอความเพียงบางสวนที่เกบ็ในตัวแปรแบบ String มาใชงานโดยใช Method “substring()” ตัวอยาง

String mess = “Gozzila”;

String sub = mess.substring(0,4);

คําตอบคือ Gozz (0,4) คือ เริ่มต้ังแตตัวแรกจนถึงตัวที่ 4

7.3 การเชื่อมตอขอความ (Concatenation)

การเชื่อมตอขอความโดยใชเครื่องหมาย +

ตัวอยาง

String mess = “Hello”;

String mess1 = “Gozzila”;

String name = mess + “ “ + mess1;

System.out.println(name.length());

การรับขอมูลทางจอภาพ

1. การใช System.in.read

- เปนการรบัขอมูลที่ปอนทางจอภาพไดเพียง 1 ตัวอกัษรเทานัน้ ซ่ึง

คําส่ังที่ใชคือ “System.in.read()”

- การเขียนโปรแกรมเพื่อรับขอมูลทางจอภาพนั้น จะตองใชคั่ง

“throws IOException” และ Package ชื่อ “java.io” รวมดวย

เสมอ เพื่อใชในการตรวจจับความผิดพลาดในการรับขอมูล

import java.io.*;public class Ex_read {

public static void main (String args [] ) throws IOException {

char ch;System.out.print(“ Input 1 character : ”);

ch = (char)System.in.read();System.out.println(ch);

}}

2. การใช BufferedReader รวมกับ InputStreamReader

การรับขอมูลในรูปแบบของ String โดยใชคําสั่ง 2 คําสั่ง ไดแก

- InputStreamReader reader = new InputStreamReader(System.in);

- BufferedReader stdin = new BufferedReader(reader);

แบบเขียนรวมกัน

BufferedReader stdin = new BufferedReader (new InputStreamReader (System.in))

Method ที่ใชรวมกัน

ช่ือ readLine ในการรบัขอมูลทางจอภาพดังน้ี

Input = stdin.readLine();

import java.io.*;

public class Ex_read {

Public static void main (String args [] ) throws IOException{

BufferedReader stdin = new BufferedReader (new InputStreamReader (System.in));

String Input = “”;

System.out.print(“ Input message : ”);

Input = stdin.readLine();

System.out.println(“Your message is ”+ Input);

}

}

การรับขอมลูเปนตัวเลข

Input = stdin.readLine();

int num = Integer.parseInt(Input);

3. การใช Scanner

• เปน Class หนึ่งที่สามารถเรยีกใชไดใน JDK 1.5.0 ซึ่งเก็บอยูใน java.util

• รูปแบบการสรางการอานขอมูลจาก keyboard คือ

Scanner keyboard = new Scanner(System.in);

• รูปแบบการนําไปใชคือ

String input = keyboard.nextLine();

byte input = keyboard.nextByte();

short input = keyboard.nextShort();

int input = keyboard.nextInt();

long input = keyboard.nextLong();

double input = keyboard.nextDouble();

float input = keyboard.nextFloat();

ตัวอยางโปรแกรมimport java.util.Scanner;public class hw3_1

{public static void main (String args [] ) {

int num1,num2,sum;Scanner keyboard = new Scanner(System.in);

System.out.print("Input Number1 : ");num1 = keyboard.nextInt();

System.out.print("Input Number2 : ");num2 = keyboard.nextInt();

sum = num1+num2;System.out.println("Sum : "+sum);

}}

การกําหนดตําแหนงของทศนิยม

java.text.DecimalFormat dfm = new java.text.DecimalFormat("0.00");

dfm.format(ตัวแปล)

ตัวอยาง

double pi=3.1414;

java.text.DecimalFormat dfm = new java.text.DecimalFormat("0.00");

System.out.println(dfm.format(pi));

แบบฝกหัด

1. กําหนดให

- short a = 350, int b=245, c=165

double d,h,f,g

- d = a/b , h = b%c , f = b-c , g = a-(b+c)

จงหาคําตอบตอไปนี้

1.1) d+f > h+g

1.2) d / h <= f % g

1.3) d <= h || f > g

1.4) d-h <= h || !(f == g) && f*g !=g*f

2. จงแปลงขอมูลตอไปนี้

2.1) byte b=67; // จงแปลงเปน int, double และ

float

2.2) double c=7.346 // จงแปลงเปน byte, short

และ float

3. เขียนโปรแกรมรับชื่อและนามสกุล

- รับชือ่และนามสกุลเปนตัวเล็ก

- หาความยาวท้ังหมด

- ใหพิมพชื่อและนามสกุลพรอมกัน โดยใหอักษรตัวแรกของชื่อ

และนามสกุลเปนตัวใหญ

4. เขียนโปรแกรมหาพื้นทีว่งกลมและเสนรอบวง

- รับคา รัศมี

- สูตรพื้นที่ คือ ¶r2

- สูตรเสนรอบวง คือ 2 ¶ r

5. เขียนโปรแกรมหาเงินเดือนสุทธิหลังจากหักภาษีแลว

- รับคา เงินเดือนและจํานวนช่ัวโมง

- OT ช่ัวโมงละ 150 บาท

- รวมเงินเดือนและคา OT แลวคิดภาษี 7%

- แสดงเงินเดือน,จํานวนช่ัวโมง,จํานวน OT ,ภาษี

และเงินเดือนสุทธิ

ขอ 6.

สรางโปรแกรมแปลงหนวย โดยรบั Input ทาง

Keyboard ตั้งชื่อ Project และ Class วา DataConv

ดูอัตราการแปลงหนวยไดท่ีเว็บไซต

http://navy.in.th/dataconv.html

โดยเลือกแปลงหนวยอะไรก็ไดคนละ 1 หนวย

Recommended