こんにちは。初めて質問させていただきます。よろしくお願いします。
現在javaで作ったプログラムをjspでも使えるようにしようと考えているのですが、
二次元配列がうまくjspで反映されず困っています。
jspに関してはほとんど無知で一から勉強している次第です。
そのためなるべく簡単に、と思い
以下のプログラムを、<% %>の間に入れるだけで動かせないかと思ったのですが
エラーが出てしまいました。一次元の配列ならばできたのですが...
ちなみに以下のプログラムはcsvファイルを読み込み、
多次元配列に格納していくというものです。
稚拙なプログラムで申し訳ありません...
どなたかご教授いただければ幸いです。
import java.io.*;
import java.util.StringTokenizer;
import java.util.ArrayList;
class Dog{
public static void main(String args[]) throws IOException{
String csv = "dognum.csv";
BufferedReader br = new BufferedReader(new FileReader(csv));
String[][] array = new String[100][];
int i = 0;
while (true) {
String line = br.readLine();
if(line==null) break;
array[i] = line.split(",");
i++;
}
for (i = 0; i < 101; i++) {
for (int j = 0; j < array[i].length; j++) {
System.out.println("["+i+"]["+j+"] = " + array[i][j]);
}
}
}
}
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
こんにちは。
実際のところJavaとJSPはほとんど変わりませんよ。
ほとんど同じ記述でいけます。
エラーは何が出ているかが重要ですので質問する際はエラー内容を質問に含めたほうが良いです。
String[][] array = new String[100][]; で宣言しています。
しかしfor (i = 0; i < 101; i++) {
にて0~100のループを行なっていますが配列が100ですと0~99になります。
<% %>のなかに入れれば基本的には動きますが、import宣言等はちょっとちがいますのでご注意ください。
この回答への補足
何度も申し訳ありません。
String csv = "dognum.csv";
BufferedReader br = new BufferedReader(new FileReader(csv));
を
FileReader fr = new FileReader(application.getRealPath("dognum.csv"));
BufferedReader br = new BufferedReader(fr);
とし、指摘していただいたループの部分を訂正したところ
無事表示させるようになりました!
アドバイスとても参考になりました。
ありがとうございました。
返信ありがとうございます!
エラー内容も含めるべきでした。
エラーは以下のように出ています。
-------------------------
type 例外レポート
メッセージ
説明 The server encountered an internal error () that prevented it from fulfilling this request.
例外
org.apache.jasper.JasperException: Exception in JSP: /jspdir/test.jsp:9
6:
7: <%
8: String csv = "dognum.csv";
9: BufferedReader br = new BufferedReader(new FileReader(csv));
10:
11: String[][] array = new String[100][];
12: int i = 0;
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:491)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:401)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:308)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:259)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
原因
java.io.FileNotFoundException: dognum.csv (指定されたファイルが見つかりません。)
java.io.FileInputStream.open(Native Method)
java.io.FileInputStream.<init>(Unknown Source)
java.io.FileInputStream.<init>(Unknown Source)
java.io.FileReader.<init>(Unknown Source)
org.apache.jsp.jspdir.test_jsp._jspService(test_jsp.java:53)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:371)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:308)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:259)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
java自体はコンパイルできるのですが...
JSPは以下のように記述しています。
import宣言はこのようにして大丈夫でしょうか?
<%@page contentType="text/html; charset=Shift_JIS" pageEncoding="Shift_JIS"%>
<%@page import="java.io.*,java.util.*,java.util.ArrayList" %>
<html>
<head><title>test</title></head>
<body>
<%
String csv = "dognum.csv";
BufferedReader br = new BufferedReader(new FileReader(csv));
String[][] array = new String[100][];
int i = 0;
while (true) {
String line = br.readLine();
if(line==null) break;
array[i] = line.split(",");
i++;
}
for (i = 0; i < 100; i++) {
for (int j = 0; j < array[i].length; j++) {
System.out.println("["+i+"]["+j+"] = " + array[i][j]);
}
}
%>
</table>
</body>
</html>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Java Java 配列<選挙> 4 2023/07/31 15:07
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
- その他(プログラミング・Web制作) pythonのこのエラーがわかりません 3 2022/11/16 14:54
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列をセッションに割り当てた後で
-
この警告はどうすれば?
-
多次元配列はなぜ必要???
-
ArrayListからBean配列に値をセ...
-
半角カナの判別方法
-
配列の中に複数存在する数がい...
-
JavaBeansの配列の値取得方法に...
-
インスタンス?new?オブジェクト...
-
大きさがわからない配列
-
JavaでC言語のポインタ演算風な...
-
[Ljava.lang.Stringってなんですか
-
Java 配列の問題です。 写真の...
-
いくつかのchar型の配列に入っ...
-
javaで大容量テキストファイル...
-
n番目に大きな値を探索する
-
「シンボルを見つけれません」...
-
Java・配列の問題です。 int 「...
-
javamailで複数人にメールを送...
-
初期値を持ったクラスの配列を...
-
『args[]』とは?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Javaで文字と数字が混ざったも...
-
[Ljava.lang.Stringってなんですか
-
この警告はどうすれば?
-
Java配列の問題を教えてくださ...
-
配列の中に複数存在する数がい...
-
配列で、値の入っている要素数...
-
java
-
『args[]』とは?
-
javaで大容量テキストファイル...
-
C#で動的配列Listの中身をListB...
-
csvファイルを2次元配列に格納
-
Javaで文字を漢字であるか否か...
-
フローチャート
-
javaについて
-
【C#】ハッシュテーブル(連想...
-
セッションを使ったint型の値の...
-
C言語でunsigned char配列を連...
-
配列について
-
n番目に大きな値を探索する
-
cloneメソッドについて (java)
おすすめ情報