質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

1回答

1868閲覧

java チャット 表示件数

khr0404

総合スコア43

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2016/05/23 05:58

###前提・実現したいこと
簡易的なチャットのような物をつくっているのですが、このソースで実行すると投稿され表示された部分の件数が投稿された番号ではなく5.4.3.2.1と表示されている件数分しかでてきません。
どのように訂正したらよいでしょうか。。。
ご教授お願いします。

###ChatOutput.jsp

java

1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<%@ page import="java.util.ArrayList" %> 4<%@ page import=".Contribution" %> 5 6<%@ page import=".Chat1" %> 7 8 9<%ArrayList<Contribution> chatList = (ArrayList<Contribution>) application.getAttribute( "chatList" ); %> 10<% %> 11<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 12<html> 13<head> 14<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 15 16<title>チャット</title> 17<h1>チャットDAO</h1> 18</head> 19<body> 20<form action="/Test/Chat1" method="post"> 21名前:<input type="text" name = "Name" value = "" size=20> 22<br> 23<input type="text" name = "Body" value = "" size=40> 24<input type="submit" value=" 投稿 " name="do"> 25<input type="submit" value=" 再読込 " name="relode"> 26<br> 27表示行数:<input type="number" name="num" value="5" min="1" max="100" step="1">28<input type="submit" value=" 設定 " name="setting"> 29</form> 30 31<% int CLS =chatList.size(); 32 for( int i = 0; i < CLS; i++ ) {%> 33<%= (CLS - i )%><%=" "%><%=chatList.get( CLS - 1 - i ).getName()%><%=":"%><%=chatList.get(CLS - 1 - i ).getBody()%> 34<% System.out.println(DLS); %> 35 36<br> 37<%}%> 38</body> 39</html>

###Chat1

java

1 2 3 4import java.io.IOException; 5import java.util.ArrayList; 6 7import javax.servlet.RequestDispatcher; 8import javax.servlet.ServletConfig; 9import javax.servlet.ServletContext; 10import javax.servlet.ServletException; 11import javax.servlet.annotation.WebServlet; 12import javax.servlet.http.HttpServlet; 13import javax.servlet.http.HttpServletRequest; 14import javax.servlet.http.HttpServletResponse; 15 16 17@WebServlet("/Chat") 18public class Chat1 extends HttpServlet { 19 20 21 private static final long serialVersionUID = 1L; 22 23 24 public Chat1() { 25 26 super(); 27 28 } 29 30 31 @Override 32 protected void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { 33 34 this.doPost( request, response ); 35 } 36 37 38 @SuppressWarnings("unchecked") 39 @Override 40 protected void doPost( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { 41 42 response.setContentType( "text/html; charset=UTF-8" );//HTML出力 43 request.setCharacterEncoding( "UTF-8" ); 44 45 try { 46 ServletContext application = this.getServletContext();//ServletContextインスタンスの取得 47 48 ServletConfig sconfig = getServletConfig(); 49 String primary = sconfig.getInitParameter( "chat" ); 50 51 if ( primary == null ) { 52 primary = (String) application.getAttribute( "初期値" ); 53 } 54 55 ChatDataDAOImpl_File CDIF = (ChatDataDAOImpl_File) Class.forName( primary ).newInstance(); 56 57 ArrayList<Contribution> chatList = new ArrayList();//ArrayListの生成 58 String name = request.getParameter( "Name" ); 59 String body = request.getParameter( "Body" ); 60 61 62 if ( name != "" && body != "" && name != null && body != null ) { 63 64 CDIF.addContribution( new Contribution( name, body ) ); 65 } 66 67 int number = 5; 68 String num = request.getParameter( "num" ); 69 70 if ( num != null ) { 71 number = Integer.parseInt( num ); 72 } 73 chatList = CDIF.getContribution( number ); 74 75 application.setAttribute( "chatList", chatList );//アプリケーションスコープにインスタンスを保存 76 application.setAttribute( "初期値", primary );//アプリケーションスコープにインスタンスを保存 77 RequestDispatcher dispatch = request.getRequestDispatcher( "/ChatOutput.jsp" ); 78 dispatch.forward( request, response ); 79 80 81 } catch ( InstantiationException e ) { 82 83 e.printStackTrace(); 84 } catch ( IllegalAccessException e ) { 85 86 e.printStackTrace(); 87 } catch ( ClassNotFoundException e ) { 88 89 e.printStackTrace(); 90 } finally { 91 System.out.println( "finally処置" ); 92 } 93 } 94}

ChatDataDAOImpl_File

java

1 2 3 4import java.io.BufferedReader; 5import java.io.BufferedWriter; 6import java.io.File; 7import java.io.FileNotFoundException; 8import java.io.FileReader; 9import java.io.FileWriter; 10import java.io.IOException; 11import java.util.ArrayList; 12 13 14public class ChatDataDAOImpl_File implements ChatDataDAO { 15 16 17 ArrayList<Contribution> dataList = new ArrayList(); 18 19 20 ChatDataDAOImpl_File() { 21 22 try { 23 File chatfile = new File( "C:/Users/me/workspace3/chat/chatDAO.txt" ); 24 BufferedReader br = new BufferedReader( new FileReader( chatfile ) ); 25 String str = br.readLine(); 26 27 while ( str != null ) { 28 String array[] = str.split( ":" ); 29 if ( array.length != 2 ) { 30 break; 31 } 32 String name = array[0]; 33 String body = array[1]; 34 dataList.add( new Contribution( name, body ) ); 35 str = br.readLine(); 36 } 37 br.close(); 38 System.out.println( "ok1" ); 39 } catch ( FileNotFoundException e ) { 40 System.out.println( e ); 41 } catch ( IOException e ) { 42 System.out.println( e ); 43 } 44 } 45 46 47 @Override 48 public void addContribution( Contribution c ) { 49 50 dataList.add( c ); 51 try { 52 File chatfile = new File( "C:/Users/me/workspace3/chat/chatDAO.txt" ); 53 BufferedWriter bw = new BufferedWriter( new FileWriter( chatfile ) ); 54 for ( int i = 0; i < dataList.size(); i++ ) { 55 bw.write( dataList.get( i ).getName() + ":" + dataList.get( i ).getBody() ); 56 bw.newLine(); 57 } 58 bw.close(); 59 } catch ( IOException e ) { 60 System.out.println( e ); 61 } 62 } 63 64 65 @Override 66 public ArrayList getContribution( int count ) { 67 68 ArrayList aList = new ArrayList(); 69 int DLS = dataList.size(); 70 71 System.out.println( dataList.size() ); 72 if ( DLS < count ) { 73 for ( int j = 0; j < DLS; j++ ) 74 aList.add( dataList.get( j ) ); 75 } else { 76 for ( int j = DLS - count; j < DLS; j++ ) { 77 aList.add( dataList.get( j ) ); 78 } 79 } 80 return aList; 81 } 82 83} 84

###ChatDataDAO

java

1import java.util.ArrayList; 2 3 4public interface ChatDataDAO { 5 6 7 void addContribution( Contribution c ); 8 9 10 ArrayList getContribution( int i ); 11} 12

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

<%= (CLS - i )%>のところで番号を表示しようとしているんだと思いますが、
int CLS =chatList.size();では今取ってきているのが5件なのでCLS5になり、
iは0, 1, 2, 3, 4となるので、当然のごとく5, 4, 3, 2, 1と表示されますね。

Contributionの中に投稿番号を持っているのなら、単にそれを出力すれば良いですが、
持ってないのだとしたらどのように一意に順序を決定するのかを決めないといけませんね。

投稿2016/05/23 06:38

argius

総合スコア9390

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

khr0404

2016/05/23 07:56

argiusさん、回答ありがとうございます。 そうなんですよね。。。 実行結果が5件だと 5 5 5 5 5というようになるのでそのような理由だと思っていたのですが、 記述方法がわからず悩んでおりました。 もう一度やってみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問