不要在循环中定义变量。试试在循环外面定义。Entry this_entry = null;
Entry next_entry = null;String this_s_time = null;
String this_e_time = null;
int this_edaban = 0;
String next_s_time = null;
String next_e_time = null;
int next_edaban = 0;for(...){
this_entry = (Entry)vec.elementAt(i);
next_entry = (Entry)vec.elementAt(i+1); this_s_time = this_entry.getStart_time();
this_e_time = this_entry.getEnd_time();
this_edaban = this_entry.getEdaban();
next_s_time = next_entry.getStart_time();
next_e_time = next_entry.getEnd_time();
next_edaban = next_entry.getEdaban();.......}
Entry next_entry = null;String this_s_time = null;
String this_e_time = null;
int this_edaban = 0;
String next_s_time = null;
String next_e_time = null;
int next_edaban = 0;for(...){
this_entry = (Entry)vec.elementAt(i);
next_entry = (Entry)vec.elementAt(i+1); this_s_time = this_entry.getStart_time();
this_e_time = this_entry.getEnd_time();
this_edaban = this_entry.getEdaban();
next_s_time = next_entry.getStart_time();
next_e_time = next_entry.getEnd_time();
next_edaban = next_entry.getEdaban();.......}
package com.bean.sc003;import java.sql.*;
import java.util.Vector;import com.bean.sc003.*;
import com.bean.DatabaseBean;public class DailySchBean
{
String userId;
int edaban;
String theDate;
Vector selfSch = null;
Vector otherSch = null;
boolean bn_sch = false;
//スケジュール時間帯設定テーブルから
TimeBean tb = new TimeBean();
String sTime = tb.getStart_time();
String eTime = tb.getEnd_time();
//Constructor
public DailySchBean(String userId,String theDate) {
this.userId = userId;
this.theDate = theDate;
selfSch = new Vector();
otherSch = new Vector();
bn_sch = getSchedule();
} //該当ユーザのスケジュール情報
public Vector getSelfSch() {
return selfSch;
}
public int getSelfCount() {
return selfSch.size();
} //該当ユーザのグループのスケジュール情報
public Vector getOtherSch() {
return otherSch;
}
public int getOtherCount() {
return otherSch.size();
}
// Convert String to int
private int s2i(String time) {
return Integer.parseInt(time);
}
//時間所占単元格数の転変
private int getCellCount(String stime, String etime) {
int count = 0; int shour = Integer.parseInt(stime.substring(0, 2));
int sminute = Integer.parseInt(stime.substring(2, 4));
int ehour = Integer.parseInt(etime.substring(0, 2));
int eminute = Integer.parseInt(etime.substring(2, 4)); count = (ehour - shour) * 6 + eminute/10 + (50 - sminute)/10 + 1; return count;
}
//該当時間帯にスケジュール情報が無い時、アイコン(スケジュール登録)を表示する
private Vector getAllEntry(String sTime, String eTime, Vector vec) {
Entry first_entry = (Entry)vec.firstElement();
Entry last_entry = (Entry)vec.lastElement(); String first_s_time = first_entry.getStart_time();
String last_e_time = last_entry.getEnd_time(); //前の空
if (s2i(first_s_time) > s2i(sTime))
{
int add_cellCount = getCellCount(first_s_time, sTime);
Entry add_entry = new Entry(sTime, first_s_time,add_cellCount);
vec.insertElementAt(add_entry, 0);
} //後の空
if (s2i(last_e_time) < s2i(eTime))
{
int add_cellCount = getCellCount(last_e_time, eTime);
Entry add_entry = new Entry(last_e_time, eTime, add_cellCount);
vec.addElement(add_entry);
}
//中間の空、重ねる部分
Entry this_entry = null;
Entry next_entry = null; String this_s_time = "";
String this_e_time = "";
int this_edaban = 0;
String next_s_time = "";
String next_e_time = "";
int next_edaban = 0; for (int i = 0; i < vec.size() - 1 ; i++ )
{
this_entry = (Entry)vec.elementAt(i);
next_entry = (Entry)vec.elementAt(i+1); this_s_time = this_entry.getStart_time();
this_e_time = this_entry.getEnd_time();
this_edaban = this_entry.getEdaban();
next_s_time = next_entry.getStart_time();
next_e_time = next_entry.getEnd_time();
next_edaban = next_entry.getEdaban();
if (s2i(next_s_time) < s2i(this_e_time))
{
//重ねる部分は枝番が小さいほうがの時間帯を優先すること
if (this_edaban < next_edaban)
{
next_entry.setStart_time(this_e_time);
vec.setElementAt(next_entry, i+1);
}
else
{
this_entry.setEnd_time(next_s_time);
vec.setElementAt(this_entry, i);
}
} //該当時間帯にスケジュール情報が無い時、アイコン(スケジュール登録)を表示する
if (s2i(next_s_time) > s2i(this_e_time))
{
int add_cellCount = getCellCount(next_s_time, this_e_time);
Entry add_entry = new Entry(this_e_time, next_s_time, add_cellCount);
vec.insertElementAt(add_entry, i+1);
} }
//計算出毎件内容所占的cellCount
Entry entry = null;
String start_time = "";
String end_time = "";
int cellCount = 0; for (int i = 0; i < vec.size() - 1 ; i++ )
{
entry = (Entry)vec.elementAt(i);
start_time = entry.getStart_time();
end_time = entry.getEnd_time();
cellCount = 0;
if (cellCount == 0)
{
cellCount = getCellCount(start_time, end_time);
}
entry.setCellCount(cellCount);
vec.setElementAt(entry, i); } return vec; }
//スケジュール情報テーブルから、該当ユーザの該当日付のスケジュール情報を取得して
public boolean getSchedule() { Vector vec_sch = new Vector();
DatabaseBean aDatabaseBean = new DatabaseBean();
String sql="SELECT user_id, edaban, start_time, end_time, plan_name, place_name, s_memo, open_flg" +
" FROM t_schedule "+
" WHERE user_id = '" + userId + "'" +
" AND start_date = '" + theDate + "'" +
" AND end_date = '" + theDate + "'"+
" AND ((division = '1' AND start_date <= '"+theDate+"'"+
" AND end_date>= '"+theDate+"')" +
" OR (division = '2'" +
" AND (( pattern = '1'"+
" AND du_s_date <= '"+theDate+"'"+
" AND du_e_date >= '"+theDate+"')"+
" OR ( pattern = '2'"+
" AND du_s_date <= '"+theDate+"'"+
" AND du_e_date >= '"+theDate+"'" +
" AND to_char(to_date('"+theDate+"'),'D')!=1"+
" AND to_char(to_date('"+theDate+"'),'D')!=7)"+
" OR ( pattern = '3'" +
" AND du_s_date <= '"+theDate+"'"+
" AND du_e_date >= '"+theDate+"'" +
" AND to_char(to_date('"+theDate+"'),'D')= du_first)" +
" OR ( pattern = '4'" +
" AND du_s_date <= '"+theDate+"'" +
" AND du_e_date >='"+theDate+"'"+
" AND to_char(to_date('"+theDate+"'),'DD') = du_first)"+
" OR ( pattern = '5'" +
" AND du_s_date <= '"+theDate+"'" +
" AND du_e_date >= '"+theDate+"'"+
" AND to_char(to_date('"+theDate+"'),'W') = du_first"+
" AND to_char(to_date('"+theDate+"'),'D') = du_second))))"+
" ORDER BY start_time, edaban";
ResultSet rs = aDatabaseBean.executeQuery(sql);
try
{
while (rs.next()) { int i_edaban = rs.getInt("edaban");
String s_start_time = rs.getString("start_time");
String s_end_time = rs.getString("end_time");
String s_plan_name = rs.getString("plan_name");
String s_place_name = rs.getString("place_name");
String s_s_memo = rs.getString("s_memo");
String s_open_flg = rs.getString("open_flg");
Entry entry = new Entry(i_edaban, s_start_time, s_end_time, 0, s_plan_name, s_place_name, s_s_memo, s_open_flg); vec_sch.addElement(entry); } selfSch = getAllEntry(sTime, eTime, vec_sch);
aDatabaseBean.disConnection();
return true; }
catch (SQLException ex)
{
aDatabaseBean.disConnection();
return false;
}
}
public static void main(String[] args) {
DailySchBean aDailySchBean = new DailySchBean("Fan","2003-05-21");
Vector vec = aDailySchBean.getSelfSch();
int rows = aDailySchBean.getSelfCount();
System.out.println(rows); for (int i = 0; i < rows; i++) {
Entry en = (Entry)vec.elementAt(i);
System.out.println(en.getPlan_name());
System.out.println(en.getCellCount());
}
}
}
读了你的for语句
不觉得流程或语法有什么错误
我感觉for (int i = 0; i < vec.size() - 1 ; i++ )
中i < vec.size() - 1是否可以处理成i < (vec.size() - 1)
我感觉好象运算符的优先级的事。