สอบถามปัญหา Java

เริ่มโพสต์โดย ~ZephyR~, 30 พ.ย. 2008, 22:47 น.

0 สมาชิก และ 1 บุคคลทั่วไป กำลังเปิดอ่านโพสต์นี้

~ZephyR~

ไม่ทราบว่าใครพอจะรู้บ้างครับว่า

Scanner ของ java มันใช้ยังไง

Scanner sc = new Scanner(System.in);

ขอบคุณล่วงหน้าครับ

ปล. อ่าน doc ไม่รู้เรื่อง  :49: :49:
เกือบลืมไปเลยว่าเคยแนะนำตัว

ยุนเอ



sc.readline หรืออะไรซักอย่างครับ
system.in มันรับค่ามาจาก keyboard

ลองงมๆ methods ดูครับ
เราจะต้องการอะไรมากมายไปกว่า อะไรมากมาย

ต้น

import java.util.Scanner  เข้ามาก่อนครับ

วิธีใช้ก็เช่น

Scanner reader=new Scanner(System.in);
String word=reader.nextLine();
System.out.print(word);

เป็นการรับค่าจากคีย์บอร์ดเก็บไว้ในตัวแปร word แล้วสั่งพิมพ์ออกทางหน้าจอครับ


~ZephyR~

#3
ขอบคุณครับ


เหอะๆ คราวนี้งง เข้าไปใหญ่ครับ พอดีเอา code ของอาจารย์ มาศึกษาดู

    public static void main(String[] args) throws Exception {
        Scanner scanner = new Scanner(System.in);
        String input = scanner.nextLine();
        Hashtable<String, String> rules = new Hashtable<String, String>();
        for(String line : readLines("rules.txt")){
            String[] items = line.split(" ");
            rules.put(items[0], items[1]);
        }
        System.out.println(forward(rules, input));
    }


ไอ้ตรงแดงๆ นั่นแหละครับ มันคืออะไร....ใช้ยังไงหรือครับ

// มันไม่แดงแฮะ
เกือบลืมไปเลยว่าเคยแนะนำตัว

☼ แอนมินิ ☼

#4
Hashtable เป็น class นึงของ Collection น่ะ
ถ้าเรามี object 1 ตัวที่เป็น Hashtable จะทำให้เราเก็บข้อมูลในรูปแบบคล้ายๆตารางที่มี 2 column
กี่แถวก็ได้ แล้วแต่ว่าเราจะใส่เข้าไปกี่แถว

จากใน code เป็นตารางที่แถวหนึ่งๆจะเก็บค่า string 2 ตัว (เค้าเรียกว่าเก็บแบบ key value pair) เช่นใส่ one year2008 ทาง key board จะได้


|one|year2008|

เวลาเอาข้อมูลเข้าไปเก็บใน obj ของ hashtable จะเอาเข้าไปเป็นแถว ใช้ method put
ซึ่งตัวแรกเค้าจะเรียกว่า key (ในที่นี้คือ one) อีกตัวจะเรียกว่า value (ในที่นี้คือ year2008)

ถ้าเราใส่เข้าไปหลายแถวเช่น




|one   |year2008|
|two   |year2009|
|three |year2010|

แล้วเราอยากหาว่า two เนี่ยคือปีอะไรก็สามารถหาโดยใช้ method contain ได้


อธิบายไม่ค่อยละเอียดเท่าไหร่ งงมั้ยหว่า
ถ้าอยากศึกษาเพิ่มเติมไป link นี้ได้เลยจ้ะ ส่วน link  นี้มีตัวอย่างเพียบ  :12:


ยุนเอ



ไอ <> ที่ครอบอยู่เนี้ย เหมือนเป็นคำอธิบาย hashtable ว่า มันมีไว้เก็บค่าอะไรนะ

พึ่งเพิ่มมาตอนหลลงเพื่อจะได้เข้าใจว่ามันเป็น type อะไรกันแน่
เราจะต้องการอะไรมากมายไปกว่า อะไรมากมาย

~ZephyR~

#6
ขอบคุณคร้าบบบบบ  :46: :46:
for(String line : readLines("rules.txt")){
            String[] items = line.split(" ");
            rules.put(items[0], items[1]);
        }


แล้วตรงนี้ล่ะครับ ไม่เข้าใจ for each (ปกติเจอแต่ for แบบปกติ ธรรมด๊า ธรรมดา)

อ้อ แล้วนี่เป็น method readLines นะครับ

    public static List<String> readLines(String filename){
        ArrayList<String> lines = new ArrayList<String>();
        try{
            BufferedReader reader = new BufferedReader(new FileReader(filename));
            String line;
            while((line = reader.readLine()) != null)
                lines.add(line);
        }catch(Exception e){}
        return lines;       
    }



สุดท้ายตัวนี้เป็นไฟล์ rules.txt

1011 1055
1022 1055
1055 1077
1054 1053


ปล. จริงๆ ผมน่าจะถามทีเดียวนะเนี่ย...แต่มันติดทีละนิดๆ น่ะครับ รบกวนด้วยครับ

ปล2. พี่กูฯ (Google) ทำผมงง  :09:
เกือบลืมไปเลยว่าเคยแนะนำตัว

~ZephyR~

แหะๆ ได้แล้วครับ

credit: http://codesnippet.exteen.comhttp://codesnippet.exteen.com

For-each Loop

การใช้งาน For-each loop ถูกใช้เพื่อลดความยุ่งยากในการแจกแจงข้อมูลที่อยู่ในคอลเล็กชันหรืออาเรย์ โดยจะทำให้ผู้ใช้เข้าถึงสมาชิกแต่ละตัวที่อยู่ในคอลเล็กชันได้ แต่เดิมนั้นการเข้าถึงสมาชิกแต่ละตัวจะต้องสร้างตัวแปรที่เป็น Iterator เพื่อดึงข้อมูลตัวถัดไปออกมาดังตัวอย่าง

for (Iterator i = suits.iterator(); i.hasNext(); ) {
    Suit suit = (Suit) i.next();
    for (Iterator j = ranks.iterator(); j.hasNext(); )
        sortedDeck.add(new Card(suit, j.next()));
}


แต่เมื่อใช้วิธี for-each ทำให้สามารถเขียนโค้ดได้ง่ายขึ้นมาก

for (Suit suit : suits)
    for (Rank rank : ranks)
        sortedDeck.add(new Card(suit, rank));


และในทำนองเดียวกัน for-each สามารถใช้ได้กับโครงสร้างข้อมูลประเภทอะเรย์ได้ด้วย ทำให้ไม่ต้องเข้าถึงผ่านตัวดัชนี (index) ตัวอย่างต่อไปนี้เป็นการหาค่าผลรวมของสมาชิกทุกตัวที่อยู่ในอะเรย์

// คืนค่าผลรวมของสมาชิกทุกตัวในอะเรย์ a
public int sum(int[] a) {
    int result = 0;
    for (int i : a)
        result += i;
    return result;
}



ปล. ใช้เวลางมอยู่ 1 วัน เง้อ  :08:

ปฮ. ถามเอง  ตอบเอง  :02:
เกือบลืมไปเลยว่าเคยแนะนำตัว

Earthchie

ขุด!!~

มีงานจาวามาถามอีกแล้วครับ

เป็นของวิชา network&protocol แต่อ.เห็นว่าเคยเรียน OOP มา เลยสั่งงาน Java ซะเลย (หารู้ไม่ ทำไม่เป็นซักคน :08:)

แล้วนี่ก็หนีกลับอังกฤษไปละ เดี๋ยวกุมภาจะมารับงาน

โปรแกรมจะต้อง
1. ดาวน์โหลดไฟล์ webpage มาเป็น html
2. ถ้าหน้านั้นแสดงผลพวกไฟล์มัลติมีเดีย ก็ให้โหลดมาด้วย  :07: (เข้าใจว่าพวกไฟล์รูปกับแฟลช)
3. เน็ตที่คณะเป็น proxy 192.168.11.1 port 8080 ต้องผ่านได้  :28:

โดยเค้าบอกว่าห้ามใช้ชุดคำสั่งสำเร็จรูปที่มีอยู่ในไลบลารี่

ข้อแรกงมๆมา ทำได้แล้วครับ แต่ข้อสองนี่ เอิ่มม  :28:

เลยมีคำถามอยากถามดังนี้ครับ
1. จะเซฟไฟล์ image ต้องทำยังไงบ้างครับ ตอนนี้ได้แต่ view
2. เซฟไฟล์ *.swf ต้องทำยังไงบ้างครับ

จริงๆคำถามมีเยอะ แต่ขอค่อยๆถามดีกว่า แก้ไปทีละจุดๆ

ขอขคุณมากครับ ^^

ป.ล. ไม่อยู่สองสามวัน จะแว้บมาอ่านอีกทีวันจันทร์นะครับ
ชื่อ Earth ครับ เรียกเอิดก็ได้ | Earthchie's Blog

icez

ตอน load ทำยังไงครับ?

ใช้ java.socket รึเปล่า

Earthchie

เปล่าครับ ผมใช้แบบนี้อ่ะ ได้โค้ดมาจากหนังสือ

ไม่เคยเขียน swing เลยยังงงๆอยู่เหมือนกันครับ
import java.awt.*;
import java.net.URL;
import javax.swing.*;

public class LoadPicture extends JApplet{
private Image image1;
public void init(){
try {
image1 = getImage(new URL("http://upload.cmudd.com/files/jmjzkjnibojnldlttmkw.jpg"));
} catch (Exception e) {
e.printStackTrace();
}
}
public void paint(Graphics g){
super.paint(g);
g.drawImage(image1,0,0,this);
}
}

ชื่อ Earth ครับ เรียกเอิดก็ได้ | Earthchie's Blog

ณัฏฐ์

จาวาที่ตูเรียนไม่มีอะไรแบบนี้ :3005:

Earthchie

#12
ตอนนี้ทำสำเร็จหมดแล้วครับ เอาไปให้อ.เช็คมา ปรากฎต้องแก้ เค้าไม่ให้ใช้ object URL

เค้าบอกให้ไปลองใช้ Socket แทน ผมงมมาทั้งวันแล้ว แต่ server มันส่ง null กลับมา ช่วยเช็คให้หน่อยครับ ผิดตรงไหน

ตอนนี้อยากได้ source code ของเพจนั้นๆครับ


String site = "www.f0nt.com";
String path = "/forum/";
try {
       Socket theSocket = new Socket(site, 80);
PrintWriter socketOut = new PrintWriter(theSocket.getOutputStream(),true);
BufferedReader in = new BufferedReader(new InputStreamReader(theSocket.getInputStream()));

socketOut.print("GET "+path+" HTTP/1.0");
socketOut.print("Host: "+site+"\r\n");
        socketOut.print("\r\n");

socketOut.flush();
           
String line;
while((line=in.readLine())!=null){
            System.out.print(line);
           }
System.out.println("end")
}  // end try
catch (UnknownHostException e) {
         System.err.println("I can't find " + site);
 }
 catch (SocketException e) {
       System.err.println("Could not connect to " + site);
 }
 catch (IOException e) {
       System.err.println(e);
 }

ชื่อ Earth ครับ เรียกเอิดก็ได้ | Earthchie's Blog

icez

   socketOut.print("GET "+path+" HTTP/1.0");

แก้เป็น

   socketOut.print("GET "+path+" HTTP/1.0\r\n");

icez

เบิ้ลนะครับ code เต็มๆ

import java.io.*;
import java.net.*;

class Test
{
public static void main(String[] args)
{
String site = "www.f0nt.com";
String path = "/forum/";
try {
Socket theSocket = new Socket(site, 80);
PrintWriter socketOut = new PrintWriter(theSocket.getOutputStream(),true);
BufferedReader in = new BufferedReader(new InputStreamReader(theSocket.getInputStream()));

socketOut.print("GET "+path+" HTTP/1.0\r\n");
socketOut.print("Host: "+site+"\r\n");
socketOut.print("User-Agent: Mozilla/4.0 (compatible; java socket client)\r\n");
socketOut.print("\r\n");

socketOut.flush();

String line;
while((line=in.readLine())!=null){
System.out.println(line);
}
System.out.println("end");
}  // end try
catch (UnknownHostException e) {
  System.err.println("I can't find " + site);
  }
  catch (SocketException e) {
System.err.println("Could not connect to " + site);
  }
  catch (IOException e) {
System.err.println(e);
  }
}
}



ดึงหน้านี้ออกมาได้เรียบร้อย

SMF 2.1.7 © 2026, Simple Machines