討論區快速選單
知識庫快速選單
程式設計俱樂部Facebook粉絲團 掌握Salesforce雲端管理秘訣
[ 回上頁 ] [ 討論區發言規則 ]
網頁版考勤哪寫錯了
更改我的閱讀文章字型大小
作者 : darkhate(星 樸)
[ 貼文 14 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 6 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/11/1 下午 03:02:03
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ page import=" java.io.BufferedReader"%>
<%@ page import="java.io.FileNotFoundException"%>
<%@ page import="java.io.FileReader"%>
<%@ page import="java.io.IOException"%>
<%@ page import="java.util.ArrayList"%>
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.*" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<form id="form1" name="form1" method="post" action="test1.jsp">
     <td>查詢字串:</td>
     <td>
     <input type="text" name="date1" id="date1"/>
     </td>
     <input type="submit" name="button1" id="button1" value="送出" />
</form>
     <br/>
<%
    
     try{
     FileReader fr = new FileReader("C:\\Users\\shin\\Desktop\\test.txt");
     BufferedReader br = new BufferedReader(fr);
     String line,tempstring;
     //String[] tempArray= new String[2];
     String[] keys={"id","name","key1","time1","desc","status1","status2","time2"};
     ArrayList myList = new ArrayList();
     //int i=0;
     while((line = br.readLine())!=null)
     {
    
     tempstring = line;
    
     String[] tempArray = tempstring.split("\\t");
     HashMap tempHash = new HashMap();
    
    
作者 : darkhate(星 樸)
[ 貼文 14 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 6 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/11/1 下午 03:02:43
for(int i=0,j=0;i< tempArray.length;i++)
     {
     //if()
     //out.print(tempArray.length+"<br>");
     //out.print(tempArray[i]+"<br>");
     if (tempArray[i].length()>1){
     tempHash.put(keys[j],tempArray[i]);
     j++;
     }
     //myList.add(tempArray[i]);
    
     }
    
     myList.add(tempHash);
     }
     br.close();
     fr.close();
for(int i=0;i<myList.size();i++){
HashMap temp = (HashMap)myList.get(i);
if (i!=0){
out.print("<br>");
}
int x;
String act = request.getParameter("date1");
for(int j=0;j<myList.size();j++){
HashMap temp2 = (HashMap)myList.get(j);
if (j!=0){
out.print("<br>");
}
if ((act.equals((String)temp.get(keys[i]))))
{
response.sendRedirect(keys[i]+":"+temp.get(keys[i]));
}
else
out.print("1111");
}}
作者 : darkhate(星 樸)
[ 貼文 14 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 6 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/11/1 下午 03:04:31
以上是我所有程式碼

無論我怎改= =

他就是顯示沒內容訊息= =

很不解~~

麻煩高手們幫我解個惑~~

作者 : ozzy123(ozzy) VC++優秀好手資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4498 | 人氣 37262 | 評價 11100 | 評價/貼文 2.47 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人darkhate註記此篇回應為最佳解答 2013/11/1 下午 03:49:17
you should divide ur codes into several parts ( divide & conquer ) and trace it step by step ( use some very basic method , e.g. println ... )
作者 : darkhate(星 樸)
[ 貼文 14 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 6 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/11/4 下午 02:50:15
這是我目前要切字串資料型態

取了一小段出來

有用HashMap

099005 王大明 3161734454 2012/10/18 下午 06:09:19 產品發呆部 考勤 1:進 0 2012/10/19 上午 09:04:44
101003 王小名 4222015566 2012/10/18 下午 06:02:15 系統生蛋部 考勤 1:進 0 2012/10/19 上午 09:04:44
101012 王添財 1581480364 2012/10/18 下午 01:24:42 系統生蛋部 考勤 1:進 0 2012/10/19 上午 09:04:44

以下是分割程式碼

  while((line = br.readLine())!=null)
     {
     //br.readLine()是指讀取txt檔的每一行資料,把讀到的資料存到line
     //再將line丟給tempstring去儲存
     tempstring = line;
    
     //因為我這個test檔的資料格式是-->一行有3個字串,用兩個空白鍵隔開,
     //tempstring.split("\\s") 會依照空白鍵來切割,剛好切三個,所以這邊我的tempArray的大小才會宣告3
     String[] tempArray = tempstring.split("\\t");
     HashMap tempHash = new HashMap();
     //這邊就是按照順序,一行一行的儲存到動態陣列裡面
    
     for(int i=0,j=0;i< tempArray.length;i++)
     {
     //if()
     //out.print(tempArray.length+"<br>");
     //out.print(tempArray[i]+"<br>");
     if (tempArray[i].length()>1){
     tempHash.put(keys[j],tempArray[i]);
     j++;
     }
     //myList.add(tempArray[i]);
    
     }
    
     myList.add(tempHash);
     }

作者 : darkhate(星 樸)
[ 貼文 14 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 6 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/11/4 下午 02:50:27
這是我目前要切字串資料型態

取了一小段出來

有用HashMap

099005 王大明 3161734454 2012/10/18 下午 06:09:19 產品發呆部 考勤 1:進 0 2012/10/19 上午 09:04:44
101003 王小名 4222015566 2012/10/18 下午 06:02:15 系統生蛋部 考勤 1:進 0 2012/10/19 上午 09:04:44
101012 王添財 1581480364 2012/10/18 下午 01:24:42 系統生蛋部 考勤 1:進 0 2012/10/19 上午 09:04:44

以下是分割程式碼

  while((line = br.readLine())!=null)
     {
     //br.readLine()是指讀取txt檔的每一行資料,把讀到的資料存到line
     //再將line丟給tempstring去儲存
     tempstring = line;
    
     //因為我這個test檔的資料格式是-->一行有3個字串,用兩個空白鍵隔開,
     //tempstring.split("\\s") 會依照空白鍵來切割,剛好切三個,所以這邊我的tempArray的大小才會宣告3
     String[] tempArray = tempstring.split("\\t");
     HashMap tempHash = new HashMap();
     //這邊就是按照順序,一行一行的儲存到動態陣列裡面
    
     for(int i=0,j=0;i< tempArray.length;i++)
     {
     //if()
     //out.print(tempArray.length+"<br>");
     //out.print(tempArray[i]+"<br>");
     if (tempArray[i].length()>1){
     tempHash.put(keys[j],tempArray[i]);
     j++;
     }
     //myList.add(tempArray[i]);
    
     }
    
     myList.add(tempHash);
     }

作者 : ozzy123(ozzy) VC++優秀好手資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4498 | 人氣 37262 | 評價 11100 | 評價/貼文 2.47 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/11/4 下午 03:17:26
For your codes , I think you should add some traces and understand its flows and obverse its expectations.
  
while((line = br.readLine())!=null)
     {

     //br.readLine()是指讀取txt檔的每一行資料,把讀到的資料存到line
     //再將line丟給tempstring去儲存
     tempstring = line;

--- here , print out its data
    
     //因為我這個test檔的資料格式是-->一行有3個字串,用兩個空白鍵隔開,
     //tempstring.split("\\s") 會依照空白鍵來切割,剛好切三個,所以這邊我的tempArray的大小才會宣告3
     String[] tempArray = tempstring.split("\\t");
--- print out all elements of tempArray
     HashMap tempHash = new HashMap();
     //這邊就是按照順序,一行一行的儲存到動態陣列裡面
    
     for(int i=0,j=0;i< tempArray.length;i++)
     {
     //if()
     //out.print(tempArray.length+"<br>");
     //out.print(tempArray[i]+"<br>");

     if (tempArray[i].length()>1){
     tempHash.put(keys[j],tempArray[i]);

---- print out all items and obverse their contents
     j++;
     }
     //myList.add(tempArray[i]);
    
     }
Or you may use IDE's debugger to track their contents
作者 : darkhate(星 樸)
[ 貼文 14 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 6 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/11/5 上午 09:48:43
這是我印出結果

099005 王大明 3161734454 2012/10/18 下午 06:09:19 產品發呆部 考勤 1:進 0 2012/10/19 上午 09:04:44
[Ljava.lang.String;@d209fb
333
id
111
099008
222
name
111
王大明
222
key1
111
3161734454
222
time1
111
2012/10/18 下午 06:09:19
222
desc
111
產品發呆部
222
status1
111
考勤
222
status2
111
1:進
222
time2
111
2012/10/19 上午 09:04:44
222

看起來很正常

所以是否比對資料有了問題?

以下是比對資料的code

     for(int i=0;i<myList.size();i++){
HashMap temp = (HashMap)myList.get(i);
if (i!=0){
out.print("<br>");
}

}
int x;
String act = request.getParameter("date1");
for (int j=0;j<keys.length;j++){
if ( (act.equals((String)temp.get(keys[j]))) ){
response.sendRedirect(keys[j]+":"+temp.get(keys[j]));
if (j!=0)
out.print(",");
}
else
{
out.print("error");
}
}
作者 : ozzy123(ozzy) VC++優秀好手資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4498 | 人氣 37262 | 評價 11100 | 評價/貼文 2.47 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/11/5 上午 10:30:45
for(int i=0;i<myList.size();i++){
   HashMap temp = (HashMap)myList.get(i);

--- check temp's contents
    if (i!=0){
     out.print("<br>");
    }

  int x ;

String act = request.getParameter("date1");

   for(int j=0 ; j<myList.size() ; j++ ) {
     HashMap temp2 = (HashMap)myList.get(j);

--- check temp2's contents

     if (j!=0){
     out.print("<br>");
   }
--- before doing following , please check their data
 
   if ((act.equals((String)temp.get(keys[i]))))
   {
    response.sendRedirect(keys[i]+":"+temp.get(keys[i]));
   }
else
out.print("1111");
}}
作者 : darkhate(星 樸)
[ 貼文 14 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 6 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/11/5 下午 02:11:50
照您所說的

一開始還沒輸入資料

印出結果如下

{id=099005, time2=2012/10/19 上午 09:04:44, desc=產品發呆部, time1=2012/10/18 下午 06:09:19, status1=考勤, status2=1:進, key1=3161734454, name=王大明}
9999
{id=099005, time2=2012/10/19 上午 09:04:44, desc=產品發呆部, time1=2012/10/18 下午 06:09:19, status1=考勤, status2=1:進, key1=3161734454, name=王大明}
0000
{id=099005, time2=2012/10/19 上午 09:04:44, desc=產品發呆部, time1=2012/10/18 下午 06:09:19, status1=考勤, status2=1:進, key1=3161734454, name=王大明}
7777

資料有讀到

但輸入資料要判斷後..

出來結果卻是..

444099005888null

error:null

以下是程式碼

     for(int i=0;i<myList.size();i++){
     HashMap temp = (HashMap)myList.get(i);
     out.print(temp);
     out.print("<br>");
     out.print("9999");
     out.print("<br>");
     if (i!=0){
     out.print("<br>");
     }

     int x ;

     String act = request.getParameter("date1");
     out.print(act);
     out.print("<br>");
     for(int j=0 ; j<myList.size() ; j++ ) {
     HashMap temp2 = (HashMap)myList.get(j);
     out.print(temp2);
     out.print("<br>");
     out.print("0000");
     out.print("<br>");
     if (j!=0){
     out.print("<br>");
     }
     out.print(temp2);
     out.print("<br>");
     out.print("7777");
     out.print("<br>");
    
     if ((act.equals((String)temp.get(keys[i]))))
     {
     response.sendRedirect(keys[i]+":"+temp.get(keys[i]));
     }
     else
     out.print("1111");
     }}
     }catch(Exception e){
     out.print("<br> error:"+e.getMessage());
     }
作者 : ozzy123(ozzy) VC++優秀好手資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4498 | 人氣 37262 | 評價 11100 | 評價/貼文 2.47 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/11/5 下午 02:38:19
may I ask you what is the IDE ? You may use the step by step function to trace your codes.
作者 : ozzy123(ozzy) VC++優秀好手資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4498 | 人氣 37262 | 評價 11100 | 評價/貼文 2.47 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/11/5 下午 02:40:48
and may I ask you what is the function of your codes ?
作者 : ozzy123(ozzy) VC++優秀好手資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4498 | 人氣 37262 | 評價 11100 | 評價/貼文 2.47 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/11/5 下午 02:45:37
for(int i=0;i<myList.size();i++){
    
     HashMap temp = (HashMap)myList.get(i);

 
     out.print(temp);

---check temp
     out.print("<br>");
     out.print("9999");
     out.print("<br>");

     if (i!=0){
     out.print("<br>");
     }

     int x ;

     String act = request.getParameter("date1");
     out.print(act);

--- check string act

     out.print("<br>");
     for(int j=0 ; j<myList.size() ; j++ ) {
     HashMap temp2 = (HashMap)myList.get(j);
     out.print(temp2);
--- check temp2

     out.print("<br>");
     out.print("0000");
     out.print("<br>");
     if (j!=0){
     out.print("<br>");
     }
     out.print(temp2);
     out.print("<br>");
     out.print("7777");
     out.print("<br>");
    
     if ((act.equals((String)temp.get(keys[i]))))
     {
     response.sendRedirect(keys[i]+":"+temp.get(keys[i]));
     }
     else
     out.print("1111");
     }}
     }catch(Exception e){
     out.print("<br> error:"+e.getMessage());
     }
作者 : darkhate(星 樸)
[ 貼文 14 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 6 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/11/5 下午 04:30:44
may I ask you what is the IDE ? You may use the step by step function to trace your codes.

IDE:eclipse JAVA EE

檔案副檔名:jsp

and may I ask you what is the function of your codes ?

以下都要同個頁面執行並顯示

1. 如果不是第一筆資料就顯示換行

2. 如果不是第一筆目錄就顯示,

3.建立一個字串變數去取得並儲存表格輸入內容

4.用if去判斷表格輸入內容是否相等資料內容,符合就印出資料

act資料好像抓不到

但語法是正確

不知為何他抓不到

而且一直出現error

作者 : ozzy123(ozzy) VC++優秀好手資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4498 | 人氣 37262 | 評價 11100 | 評價/貼文 2.47 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/11/5 下午 04:55:39
String act = request.getParameter("date1");

--- the parameter date1 is correct ? what will you want to get ?

http://openhome.cc/Gossip/ServletJSP/RequestParameterHeader.html
作者 : darkhate(星 樸)
[ 貼文 14 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 6 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/11/6 下午 04:00:11
date1是表格名稱

至於我想做出樣子

大概是像這樣頁面

http://tw.search.yahoo.com/search?p=%E5%A4%A9%E5%A0%82&fr=yfp&ei=utf-8&v=0

輸入關鍵字

然後去比對資料是否一致

再顯示資料出來

以上動作在同個頁面顯示

我今天執行出來結果是這樣

4440990058882012/10/19 1111
6660990058882012/10/19 1111
6660990058882012/10/19 1111

2012/10/19 是我輸入關鍵字

但結果不是我想要的

我要結果是

date1:2012/10/19...

date1:2012/10/19..
     .
     .
     等
  
關鍵字一筆一筆顯示

而且為何1111會印出

有讀到資料不是就不會印出嗎@@


  

作者 : ozzy123(ozzy) VC++優秀好手資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4498 | 人氣 37262 | 評價 11100 | 評價/貼文 2.47 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/11/6 下午 04:42:03
First , I think you should design your program as small as possible. For example, just owns a field and verify its correctness. you may obverse your codes always execute 1111 . that means following codes :
if ((act.equals((String)temp.get(keys[i]))))
     {
     response.sendRedirect(keys[i]+":"+temp.get(keys[i]));
     }
else
   out.print("1111"); -----> always true .
 do you think it is correct ?

I think you may reduce those data in the test file , test.txt
and test it again.
作者 : darkhate(星 樸)
[ 貼文 14 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 6 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/11/6 下午 05:22:27
for(int k=0 ; k<myList.size() ; k++ ) {
     if ((act.equals((String)temp.get(keys[k]))))
     {
     if(k==1)
     response.sendRedirect(keys[k]+":"+temp.get(keys[k]));
     }
     else
     out.print("");
     for(int e=0 ; e<myList.size() ; e++ ) {
     if (e!=0){
     out.print("<br>");}}
     }}
     }catch(Exception e){
     out.print("<br> error:"+e.getMessage());
     }

這是我後來寫的CODE

顯示結果如下

剛開始什麼都沒輸入

空白
error:null

輸入第一次資料後

資料:王大明

444099005888null
error:null

看起來資料沒讀到~~
 
把資料再度輸入一次後~

得到以下結果

444099005888cŽ‹a¤§a˜Ž1111
666099005888cŽ‹a¤§a˜Ž1111
666099005888cŽ‹a¤§a˜Ž1111
666099005888cŽ‹a¤§a˜Ž1111
error:Index: 4, Size: 4
 板主 : 風月
 > Java入門一般區 - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - Java入門一般區 - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
Java入門一般區
1 洋將 2410 
2 Aron 2130 
3 Aries 1510 
4 DEMO999 1310 
5 Ben 990 
6 ramb 620 
7 ozzy 570 
8 tand 460 
9 Huah 410 
10 vindy 400 
Java入門一般區
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
0.109375