ไม่ทราบว่าใครพอจะรู้บ้างครับว่า
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 แล้วสั่งพิมพ์ออกทางหน้าจอครับ
ขอบคุณครับ
เหอะๆ คราวนี้งง เข้าไปใหญ่ครับ พอดีเอา 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));
}
ไอ้ตรงแดงๆ นั่นแหละครับ มันคืออะไร....ใช้ยังไงหรือครับ
// มันไม่แดงแฮะ
Hashtable เป็น class นึงของ Collection น่ะ
ถ้าเรามี object 1 ตัวที่เป็น Hashtable จะทำให้เราเก็บข้อมูลในรูปแบบคล้ายๆตารางที่มี 2 column
กี่แถวก็ได้ แล้วแต่ว่าเราจะใส่เข้าไปกี่แถว
จากใน code เป็นตารางที่แถวหนึ่งๆจะเก็บค่า string 2 ตัว (เค้าเรียกว่าเก็บแบบ key value pair) เช่นใส่ one year2008 ทาง key board จะได้
เวลาเอาข้อมูลเข้าไปเก็บใน obj ของ hashtable จะเอาเข้าไปเป็นแถว ใช้ method put
ซึ่งตัวแรกเค้าจะเรียกว่า key (ในที่นี้คือ one) อีกตัวจะเรียกว่า value (ในที่นี้คือ year2008)
ถ้าเราใส่เข้าไปหลายแถวเช่น
|one | | year2008| |
|two | | year2009| |
|three | | year2010| |
แล้วเราอยากหาว่า two เนี่ยคือปีอะไรก็สามารถหาโดยใช้ method contain ได้
อธิบายไม่ค่อยละเอียดเท่าไหร่ งงมั้ยหว่า
ถ้าอยากศึกษาเพิ่มเติมไป link (http://www.particle.kth.se/~lindsey/JavaCourse/Book/Part1/Java/Chapter10/hashtable.html) นี้ได้เลยจ้ะ ส่วน link (http://www.java2s.com/Code/Java/Collections-Data-Structure/DemonstratetheHashtableclassandanEnumeration.htm) นี้มีตัวอย่างเพียบ :12:
ไอ <> ที่ครอบอยู่เนี้ย เหมือนเป็นคำอธิบาย hashtable ว่า มันมีไว้เก็บค่าอะไรนะ
พึ่งเพิ่มมาตอนหลลงเพื่อจะได้เข้าใจว่ามันเป็น type อะไรกันแน่
ขอบคุณคร้าบบบบบ :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:
แหะๆ ได้แล้วครับ
credit: http://codesnippet.exteen.com (http://codesnippet.exteen.com)http://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:
ขุด!!~
มีงานจาวามาถามอีกแล้วครับ
เป็นของวิชา 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 ต้องทำยังไงบ้างครับ
จริงๆคำถามมีเยอะ แต่ขอค่อยๆถามดีกว่า แก้ไปทีละจุดๆ
ขอขคุณมากครับ ^^
ป.ล. ไม่อยู่สองสามวัน จะแว้บมาอ่านอีกทีวันจันทร์นะครับ
ตอน load ทำยังไงครับ?
ใช้ java.socket รึเปล่า
เปล่าครับ ผมใช้แบบนี้อ่ะ ได้โค้ดมาจากหนังสือ
ไม่เคยเขียน 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);
}
}
จาวาที่ตูเรียนไม่มีอะไรแบบนี้ :3005:
ตอนนี้ทำสำเร็จหมดแล้วครับ เอาไปให้อ.เช็คมา ปรากฎต้องแก้ เค้าไม่ให้ใช้ 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);
}
socketOut.print("GET "+path+" HTTP/1.0");
แก้เป็น
socketOut.print("GET "+path+" HTTP/1.0\r\n");
เบิ้ลนะครับ 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);
}
}
}
ดึงหน้านี้ออกมาได้เรียบร้อย
เย่ๆ ได้แล้ว ขอบคุณครับ
ว่าแต่โค้ดตรงนี้
socketOut.print("User-Agent: Mozilla/4.0 (compatible; java socket client)\r\n");
ทำงานยังไงหรอครับ
เพิ่มเติมครับ ผมเพิ่งสังเกตว่ามันไม่ใช่ source code ของหน้าเพจนั้นๆ
ถ้าเกิดเราอยากได้ source code ออกมานี่จะต้องส่งคำสั่งอะไรออกไปครับ
จะเอา source ที่เป็น PHP เลยหรอคัรบ?
ถ้าใช่... เปลี่ยนเป็นเข้าทาง FTP แทนนะจ๊ะ
เอาเป็น html อ่ะครับ ตะกี้ผมลองเข้า มันได้ออกมาแบบนี้
site = "www.f0nt.com";
path = "/";
HTTP/1.1 200 OKDate: Thu, 14 Jan 2010 14:46:12 GMTServer: Apache/2.2.8 (Ubuntu)X-Powered-By: PHP/5.2.4-2ubuntu5.6Content-Length: 0Connection: closeContent-Type: text/html
เว็บอื่นก็เป็นครับ บางครั้งขึ้น bad request ด้วย
เอ ทำไมเราไม่มีปัญหาหว่า :08a:
ขึ้น source ออกมาหมดเลยนะ
ลองก๊อป code ไป compile เต็มๆ ดูยัง?
ลองก็อปไปดู หายจริงๆด้วยครับ ไล่โค้ดดูต่างกันนิดเดียว :07:
ของพี่
socketOut.print("Host: "+site+"\r\n");
ของผม
socketOut.print(" Host: "+site+"\r\n");
ต่างกันแค่เว้นวรรคหน้าโฮส :07:
มีคำถามใหม่มาครับ
ทำยังไงถึงเซฟไฟล์ gif animation ได้หรอครับ ใช้ ImageIO.write เซฟทีไรมันมาแต่เฟรมแรกทุกทีเลย :05:
streamwriter + bufferwriter ใน java.io.* โดยตรงครับผม
ต้องไม่ผ่านพวก image processor class ใน java เลย load เสร้จเซฟเป็น binary เลย
พอดีมีแต่ code VB6 กะ php อะ :3005:
:04: - -* แวะเข้ามาอ่านดุนะ
เย่ เซฟได้แล้ว ขอบคุณครับ
เผื่อคนเข้ามาดู
String url = "http://www.f0nt.com/forum/Smileys/iannnnn/27.gif";
InputStream source = (new URL(url)).openConnection().getInputStream();
int bit;
byte[] buffer = new byte[8 * 1024];
OutputStream fw = new FileOutputStream( url.substring( url.lastIndexOf("/") ) );
while((bit=source.read(buffer))!=-1){
fw.write(buffer, 0, bit);
}
fw.close();