不要在循环中定义变量。试试在循环外面定义。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();.......}

解决方案 »

  1.   

    我试了,不行还是同样的错误!全部代码如下
    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());
    }
    }
    }
      

  2.   

    TimeBean、Entry、DatabaseBean这三个类呢?
      

  3.   

    内存溢出?
    读了你的for语句
    不觉得流程或语法有什么错误
    我感觉for (int i = 0; i < vec.size() - 1 ; i++ )
    中i < vec.size() - 1是否可以处理成i < (vec.size() - 1)
    我感觉好象运算符的优先级的事。
      

  4.   

    自己找到了原因,vec.size()在循环体内不断的改变,不能用它做为循环结束的条件,可能会造成死循环!