PDA

View Full Version : ถามเรื่องการตัดคำใน JAVA หน่อยครับ



Secret_Man
17-11-2008, 11:40 PM
คือรบกวนทีนะครับ

พอดีอยากทราบวิธีการตัดคำอะครับ

เช่นๆ ผมกรอกตัวเลข 12345 ลงใน MessageDialog ภายในทีเดียว

แต่จะแยกตัวเลขออกมาให้เป็นแบบ

เอาเลข 1 ไว้ในตัวแปร a[1]

เลข 2 ไว้ในตัวแปร a[2]

.
.
.

ไปเรื่อยๆจน ถึงตัวเลขที่ n ให้ไปเก็บไว้ที่ a[n]

ประมาณนี้อะครับ

Gen0TypE
18-11-2008, 12:58 AM
ไอเดียน่าจะประมาณนี้ครับ

1. หาความยาว string ( ศึกษา string.length ดูครับ)
2. สร้าง array ที่มีขนาดเท่าความยาวของ string
3. วนลูป substring มาทีละ 1 ตัวอักษร แล้วนำค่าที่ได้มาใส่ใน array (ศึกษา string.substring ดูครับ)

ลองศึกษาดูนะครับ คิดว่าไม่น่ายาก จะให้เขียน code ให้เลยคงไม่ได้เพราะ
1. ผมไม่มี java compiler เขียนไปเดี๋ยวผิด แล้วอันที่จริงผมก็เขียนภาษานี้ไม่เป็น แหะๆ :P
2. จะได้เขียนเองเป็นครับ ให้ไอเดียไปแล้ว ;)

Secret_Man
18-11-2008, 01:03 AM
ลองทำดูแล้วครับ

import javax.swing.JOptionPane;

public class Summary {

public static void main (String[]args){

String input = JOptionPane.showInputDialog(null, "Enter Number");
String x[]= new String [3];
int i=0 ;

while(i<=3)
{
x[i] = input.substring(i, i);
i++;
}

String ans = x[0]+x[1]+x[2]+x[3];

JOptionPane.showMessageDialog(null,ans);
}

}


รับค่าได้ แต่ค่าดันไม่ออกมาซะงั้น ผิดบรรทัดไหน หายังไม่เจอซะที ==*

Gen0TypE
18-11-2008, 01:17 AM
บอกได้เลยว่า

x[i] = input.substring(i, i);
ผิดนะครับ ให้ลองไปศึกษาฟังก์ชัน substring ดูใหม่ครับ ว่า parameter แต่ละตัวของมันคืออะไร
แล้วก็ใส่ parameter ให้ถูกตามที่ต้องการนะครับ



แล้วก็อีกอย่าง

String x[]= new String [3];
ผมคิดว่าน่าจะใช้ได้แค่ x[0], x[1], x[2] นะครับ (ภาษา C เป็นอย่างนี้อ่ะครับ - -a)
x[3] ไม่น่าจะใช้ได้ เพราะปกติการประกาศ array n ตัว จะใช้ array ได้ตั้งแต่ตัวที่ 0 ถึง n-1 ครับ

ถ้าต้องการเขียนให้ยืดหยุ่นหน่อย ก็หาความยาวของ string input ก่อน แล้วค่อยสร้าง array เท่าจำนวนความยาวของ input ครับ

Secret_Man
18-11-2008, 01:26 AM
อิอิ ขอบคุณมากครับ

เดี๋ยวผมขอลองแก้ใหม่แปปนึงครับ

เดี๋ยวกลับมารายงานผล หุๆ

Secret_Man
18-11-2008, 01:39 AM
ผลลัพธ์ออกมาแล้วครับ

การทำงานคือ ให้ใส่เลขอะไรไปก็ได้ตั้งแต่ 0-9999

แล้วนำตัวเลขแต่ละตัวมาบวกกัน


import javax.swing.JOptionPane;

public class Summary {

public static void main (String[]args){

String input = JOptionPane.showInputDialog(null,"Enter Number between 0-9999","Summary The Numbers",JOptionPane.QUESTION_MESSAGE);
int x[]= {0,1,2,3,};
int i=0 ;

while(i<=3)
{
x[i] = Integer.parseInt(input.substring(i, i+1));
i++;
}

int ans = x[0]+x[1]+x[2]+x[3];

JOptionPane.showMessageDialog(null,"This is summary :: " + ans);
}

}[/b]

แต่ยังมีบัคคือถ้าใส่เลขเพียง 1 หลัก 2 หลัก หรือ 3 หลัก มันจะติดบัค ==*

Secret_Man
18-11-2008, 02:06 AM
งวดนี้ไม่มีบัคแล้วครับ

ต้องขอบคุณท่าน Gen0TypE มากนะครับที่แนะนำผมตั้งแต่ Visual Basic ^^


import javax.swing.JOptionPane;

public class Summary {

public static void main (String[]args){

String input = JOptionPane.showInputDialog(null,"Enter Number between 0-9999","Summary The Numbers",JOptionPane.QUESTION_MESSAGE);
int Input = Integer.parseInt(input);

if (Input>9999)
{
JOptionPane.showMessageDialog(null,"Please Enter Number between 0-9999");
}


else if (Input>=1000)
{
int x[]= {0,1,2,3};
int i=0 ;

while(i<=3)
{
x[i] = Integer.parseInt(input.substring(i, i+1));
i++;
}

int ans = x[0]+x[1]+x[2]+x[3];

JOptionPane.showMessageDialog(null,"This is summary :: " + ans);
}

else if(Input>=100)
{
int x[]= {0,1,2};
int i=0 ;

while(i<=2)
{
x[i] = Integer.parseInt(input.substring(i, i+1));
i++;
}

int ans = x[0]+x[1]+x[2];

JOptionPane.showMessageDialog(null,"This is summary :: " + ans);
}

else if(Input>=10)
{
int x[]= {0,1};
int i=0 ;

while(i<=1)
{
x[i] = Integer.parseInt(input.substring(i, i+1));
i++;
}

int ans = x[0]+x[1];

JOptionPane.showMessageDialog(null,"This is summary :: " + ans);
}

else if(Input>=0)
{
int x[]= {0};
int i=0 ;

while(i<=0)
{
x[i] = Integer.parseInt(input.substring(i, i+1));
i++;
}

int ans = x[0];

JOptionPane.showMessageDialog(null,"This is summary :: " + ans);
}

else JOptionPane.showMessageDialog(null,"Please Enter Number between 0-9999");

}
}[/b]