JSP、servletを実行すると 以下のエラーメッセージが 表示されてしまいます。 ---------------------------------- javax.servlet.jsp.JspTagException: <forEach> 内で供給された "items" を反復処理する方法が不明です ---------------------------------- ファイル構成は以下になります。 アプリケーションルート\WEB-INF\classes\Rssdata.java ---------------------------------- public class Rssdata{//データ格納用クラス public String[] title = new String[20]; public String[] link = new String[20]; public String[] day = new String[20]; } ---------------------------------- アプリケーションルート\WEB-INF\classes\RssOriginal.java ---------------------------------- import java.io.IOException; import java.net.URL; import java.util.HashMap; import java.util.List; import java.util.*; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.sun.syndication.feed.synd.SyndEntry; import com.sun.syndication.feed.synd.SyndFeed; import com.sun.syndication.fetcher.FeedFetcher; import com.sun.syndication.fetcher.impl.HttpURLFeedFetcher; public class RssOriginal extends HttpServlet { private static final String URL= "http://hoge.net/index20.rdf"; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { FeedFetcher ff = new HttpURLFeedFetcher(); SyndFeed feed=null; int i = 0;//for文用変数 Rssdata rssdata = new Rssdata();//rssデータ格納用クラス try { feed = ff.retrieveFeed(new URL(URL)); } catch (Exception e) { throw new ServletException(e); } Calendar cal = new GregorianCalendar(); for(SyndEntry entry : (List<SyndEntry>)feed.getEntries()){ entry.getPublishedDate(); rssdata.day[i] = cal.get(Calendar.YEAR) + "/" + (cal.get(Calendar.MONTH) + 1) + "/" + cal.get(Calendar.DAY_OF_MONTH); rssdata.link[i] = entry.getLink(); rssdata.title[i] = entry.getTitle(); /* System.out.println(rssdata.day[i]); System.out.println(rssdata.link[i]); System.out.println(rssdata.title[i]); System.out.println(); */ i++; } request.setAttribute("feed", rssdata); this.getServletContext().getRequestDispatcher("/chap4/rss/index.jsp").forward(request,response); } } ---------------------------------- アプリケーションルート\chap4\rss\index.jsp ---------------------------------- <html> <head> <title>RSS情報の展開</title> </head> <body> <h1 style="color:white;background-color:#525D76;font-size:22px;"> RSS情報の展開</h1> <ul> <c:forEach var="item" items="${requestScope['feed']}"> <li><a href="${item['link']}">${item['title']}</a></li> </c:forEach> </ul> </body> </html> ---------------------------------- またこちらのページなど検索で色々調べましたが http://kamakura.cool.ne.jp/oppama/ssja/taglibs-core.html 理屈はなんとなくイメージできるのですが 具体的な解決方法がわかりませんでした。 宜しくお願い致します。
↧
<forEach> 内で供給された "items" を反復処理する方法が不明です
↧
コンパイルはできるが実行できない(JAVA)
コマンドプロンプト上でコンパイルはできるが実行がができません。何が問題でしょうか? 外付けHDDにインストールしたのが問題でしょうか? ***状況*** ・外付けHDDをGドライブとして固定し、「G:\Program Files\Java\jdk1.6.0_17\」をインストール先に指定。 ・環境変数のPATHに「G:\Program Files\Java\jdk1.6.0_17\bin」を追加。 ・Gドライブの直下にStudyというフォルダを作りHello.javaを作製 ・コンパイルはできるが、実行はできず、下記のメッセージが表示される。 Exception in thread "main" java.lang.NoClassDefFoundError: cp Caused by: java.lang.ClassNotFoundException: cp at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) Could not find the main class: cp. Program will exit. 解決策がわかるかたがいればよろしくお願いします。
↧
↧
EclipseでJSPのコンパイルエラー
過去に開発したWebアプリをEclipseを使用して再開発し直してみようと挑戦中ですが、以下のエラーが解決できず困っています。 ***** org.apache.jasper.JasperException: JSPのクラスをコンパイルできません JSPファイル: null の中の行: -1でエラーが発生しました 生成されたサーブレットのエラーです: [javac] Compiling 1 source file E:\AddProgram\Eclipse\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Standalone\localhost\XXX\login_jsp.java:10: java.lang.Object にアクセスできません。 クラスファイル E:\AddProgram\Eclipse\eclipse\jre\lib\rt.jar(java/lang/Object.class) は不正です。 クラスファイルのバージョン 49.0 は不正です。48.0 であるべきです。 削除するか、クラスパスの正しいサブディレクトリにあるかを確認してください。 public class login_jsp extends HttpJspBase { ^ エラー 1 個 ***** Javaビルドパス-クラスパス変数は j2sdk1.4.2\jre\lib\rt.jarになっているし、 Javaコンパイラーの準拠レベルは1.4になっているし、 JAVA_HOMEやPATHもj2sdk1.4.2、j2sdk1.4.2\binになっているんですが、何故別のjarを参照してしまっているのでしょうか? Eclipseの再起動、JRE1.4.2の再インストールなども試みましたが、解決せず悩んでいます。解決方法をご存知の方、ご教授ください。 ■環境(最終的に落ち着いた使用バージョンは以下の通り。) ・EclipsePleiadesAllinOneJava3_4_2 ・java 1.4.2 ・Tomcat 4.1.31 ・Apache 2.0.53 ・MySQL 4.0.25
↧
javaのmainの引数はなぜstring[]?
Java初心者です。 基礎的なことなのですが、質問させてください。 javaのmainメソッド定義の public static void main (String[] args) について、String[] argsの部分がjavaコマンドで実行する際に与える引数であることは 理解できました。しかし、なぜStringの配列なのかが理解できません。 実行時の引数であれば、intやdoubleも使い道があるようにも感じるので、 プログラマの好きに定義できた方が便利な気がしますし、実行時に引数を与えないなら public static void main () としてしまったほうがわかりやすいとも感じてしまいます。 実はコンパイル時や実行時に裏の見えない部分でStringの配列を使っているとか、 何か理由があるのでしょうか? mainの定義は main (String[] args)と暗記でもいいのですが、 気になったので知りたく、質問させてください。
↧
【Java】複数の引数の数値と文字列の判定
Javaについてです。 コマンドライン引数を複数渡し、渡ってきた値が数字のみの場合は、数値*数値の文字数を出力し 数字のみでない場合は文字列を逆から1文字ずつ出力する。 数値の判定はtry/catchで行い、catchメソッドには「stringFlg = true;」のみにする。 というプログラムを作りたいのですが、 引数が1つの時は上手くいくのですが、11 2あ あ3 44を渡した場合、 22 あ 2 3 あ 88 と出るはずが、 22 1 1 あ 2 3 あ 4 4 と出てしまいます…。 どうしたら全ての引数を正しく表示出来るのでしょうか?教えて下さい。 現時点のソースコードです。 public class Test { public static void main(String[] args) { boolean stringFlg = false; try { if(StringUtils.isNumeric(args[0])){ for(String arg : args) { int num = Integer.parseInt(arg); System.out.println(num * arg.length()); } } else{ stringFlg = true; } } catch (NumberFormatException e) { stringFlg = true; } if(stringFlg){ for(String val : args) { String[] str = val.split(""); for(int i = str.length-1; i >= 0; i--){ System.out.println(str[i]); } } } } }
↧
↧
javamailにて連続送信の際のエラー
はじめまして.こんにちわ. いまjavamailを用いて,メール送信のプログラムを書いています. しかし,同じアドレスに送信の際に3通に1回程度エラーを返してきます.1通のみですと失敗はないのですが,複数のメールを連続で送るとエラーを返します. エラーは以下のものになります. javax.mail.AuthenticationFailedException これは認証エラーのようですが,同じSMTPを使用しているので,うまく送信できていることもあることから,方法として間違えているのではなく,何か他の部分が悪さをしているのかと思っています.例えば,次のメールがclose する前に connect をかけているのかな,と考えたりしています.そのために,transport.close() が終わった段階で1秒間ほど待つようにしてみたりしたのですが,解決できませんでした. 何か原因として考えられることありましたら,教えていただけないでしょうか.お願いいたします. また,次に今回用いている送信するクラスをつけます.呼び出す際にはこのクラスのインスタンスをつくり,送信の際にタイトルとメッセージ,添付ファイルを書き換えながら,送信用のメソッドを連続的に呼び出すことで実装しています. なにぶんjavaはまだ触り初めて日が浅いために,他の部分にて勘違いしている部分などもありましたら,そちらのご指摘もお願いいたします.
↧
Tomcatが無応答となる現象が起こります
Tomcatを使用して、開発したWebアプリケーションを動かしているのですが、時々無応答になってしまう現象が発生しています。 タスクマネージャーで見るとTomcatのCPU使用率が100%になっており、30分ほど待っても無応答のままなので、都度Tomcatのサービスを再起動して復旧しています。 stdErr/stdOutのログには何も出力されておらず、今のところ再現性も確認できておりません。 どなたかこのような現象をご存知の方はいらっしゃいませんでしょうか? 何か対応方法やアドバイスをいただけませんでしょうか? なお、Tomcatのバージョンは5.5.17で、Windows2003ServerとWindows2000Serverで動かしています(どちらの環境でも現象が発生しています)。 また同一マシン内にApacheも立てており、このバージョンはapache2.2.3です。 アドバイスお願いします。
↧
JSPでのArrayListの表示について困っています
以下のようにしてスレッドNoが同じものだけ表示したいと考えております。 servletの「text」という変数にはすべての値が格納されているところまでは確認できました。 それをJSPにて表示したいのですが、どのようにすれば出力されるのかわかりません。 どなたかお教えいただければと思います。 宜しく御願い致します。 --------------------------------------------------------- java /** * *TEXTテーブルからスレッドNoが同じものを返すメソッド * * */ public ArrayList selecttext(int no)throws SQLException{ ArrayList<Textbeen> list = new ArrayList<Textbeen>(); TextDAO kei =new TextDAO(); Connection db=kei.createConnection(); Statement sttSql=db.createStatement(); ResultSet rs=sttSql.executeQuery("SELECT * FROM TEXT WHERE KB_TH_NO='"+no+"' "); while(rs.next()){ String name=rs.getString("KB_NAME"); String tino =rs.getString("KB_TITLE_NO"); String title = rs.getString("KB_TITLE"); String mail = rs.getString("KB_MAIL"); String text = rs.getString("KB_TEXT"); String pass = rs.getString("KB_TITLE_PASS"); String date = rs.getString("KB_TIME"); int th_no = rs.getInt("KB_TH_NO"); Textbeen thread = new Textbeen(name, title, tino, mail, text, pass, date, th_no); //TO(Threadオブジェクト)を、保持するリストに追加 list.add(thread); } kei.closeConnection(db); return list; } ---------------------------------------------------------- servlet ArrayList text = new ArrayList(); try{ text = list.selecttext(TH_no); } catch(Exception e){ e.getStackTrace(); } request.setAttribute("test", text); String nextPage = "/view/user/ThreadTop.jsp"; ----------------------------------------------------------
↧
Jettyのバージョンを確認する方法
Jettyのバージョンを確認する方法を教えてください。 /usr/local/jetty/bin/jetty.sh check でできるかなと思いましたが、バージョンはわかりません。 「jetty バージョン 確認」という検索ではわかりませんでした。
↧
↧
電文とは
現在、プロジェクトでJavaで電文を取り扱うという話を聞いているのですが、イマイチピンと こないので質問させてください。 電文とは「通信プログラムで送受信されるデータ」という記述を某所でみたのですが 電文とはHTTP通信のことでしょうか。Webアプリでリクエストパラメータを送信するとXMLが responseとして返ってくる場合、これは電文のやりとりを行ったことになるのでしょうか。 HTTP通信でない電文はありますでしょうか。
↧
eclipseをバージョンアップしたら、build.xmlでエラー
eclipseをバージョンアップしたら、build.xmlでエラー eclipseを、3.2から3.5にインストールし直したところ、3.2で正常にビルド/動作していたのにエラーメッセージが付くようになってしまいました。具体的には、antを使ったbuild.xmlの一行目で、以下の行です。 <?xml version="1.0" encoding="utf-16"?> エラーメッセージは、「プロローグにコンテンツは許されません。」というものです。 ソースコードを含め、build.xmlも何も変更していませんし、半角のつもりが全角だったということもありませんでした。ためしに「utf-16」を「utf-8」に変更すれば、エラーはでなくなりました。ですが、ソースコードはUTF-8ではなくUTF-16で書かれているので、この状態では実行できてもおかしくなりますよね?eclipseメニューの「編集」-「エンコードの設定」では、デフォルトでもUTF-16になっています。 このエラーが出る原因は何でしょうか?どうすれば解決するでしょうか。また、どこかの設定を確認する必要がありますでしょうか。 ちなみに3.6で試してみても同じ現象が出ました。それ以外のバージョンは試していません。 当方、javaやeclipseの使用経験は、あまりありません。
↧
この行に複数のマーカーがあります。
JAVA初心者です。教科書通りに入力したにもかかわらずエラーが出てしまいます。 5行目に「この行に複数のマーカーがあります。iを変数に解決できません。」と出ます。どう解決したらいいのでしょうか。用語などもまだ抑えきれていないので丁寧な解説お願いします。 1public static void main(String[] args) { 2// TODO 自動生成されたメソッド・スタブ 3int n =0; 4for (int i = 1; i < 10000;i++); 5 n += i ; 6System.out.println(n); 7} }
↧
ORA-01858: 数値を指定する箇所に数値以外の文字が指定されています
<エラーメッセージの内容> ORA-01858: 数値を指定する箇所に数値以外の文字が指定されています 開発言語は、java,oracle10g express editionです スケジュールを登録する画面のところの日付のインサートで失敗します。「→」の部分です。 <以下のSQLをSQL/PLUSで実行するとうまくいきます> insert into schedule values(1, 1, '予定1', '予定1です', TO_DATE('2009-06-01 10:00','YYYY/MM/DD HH24:MI:SS') , TO_DATE('2009-06-01 12:00','YYYY/MM/DD HH24:MI:SS'), 'A社', '予定1のコメントです。',1); <問題のソースコード> * スケジュール情報をデータベースに新規保存する public void create(Schedule schedule) { String sql = "insert into " + SCHEDULE_TABLE_NAME + " (id, user_id,subject,content, start_time, end_time, place, comment1, is_publish) values(?,?,?,?,?,?,?,?,?)"; Connection con = null; try { con = createConnection(); con.setAutoCommit(false); int id = getNextId(con, SCHEDULE_TABLE_NAME); PreparedStatement stmt = con.prepareStatement(sql); →stmt.setString(5,toString(schedule.getStartTime())); →stmt.setString(6, toString(schedule.getEndTime())); * 日付を文字列表現(yyyy-MM-dd HH:mm)に変換する private String toString(java.util.Date date) { SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm"); →return "TO_DATE('"+"'"+sd.format(date)+"'"+",'YYYY/MM/DD HH24:MI:SS'"+")"; } ネット、本などでいろいろ調べましたが、わからなかったので、ヒントになることでもいいので、ご教授よろしくお願いします。
↧
↧
「パッケージ javax.servlet.http は存在しません。」
「パッケージ javax.servlet.http は存在しません。」というエラー 以下のようなエラーが出ます: C:\Users\Einhorn\mywork\myapp\WEB-INF\src\com\gokui>javac -classpath "C:\apache- tomcat-6.0.26\common\lib\servlet-api.jar" Sample016.java Sample016.java:3: パッケージ javax.servlet.http は存在しません。 import javax.servlet.http.HttpServlet; ^ Sample016.java:6: パッケージ javax.servlet は存在しません。 import javax.servlet.ServletException; ^ Sample016.java:7: パッケージ javax.servlet.http は存在しません。 import javax.servlet.http.HttpServletRequest; ^ Sample016.java:8: パッケージ javax.servlet.http は存在しません。 import javax.servlet.http.HttpServletResponse; ^ Sample016.java:9: シンボルを見つけられません。 シンボル: クラス HttpServlet public class Sample016 extends HttpServlet { ^ Sample016.java:15: シンボルを見つけられません。 シンボル: クラス HttpServletRequest 場所 : com.gokui.Sample016 の クラス public void doGet(HttpServletRequest request, HttpServletResponse respon se) ^ Sample016.java:15: シンボルを見つけられません。 シンボル: クラス HttpServletResponse 場所 : com.gokui.Sample016 の クラス public void doGet(HttpServletRequest request, HttpServletResponse respon se) ^ Sample016.java:16: シンボルを見つけられません。 シンボル: クラス ServletException 場所 : com.gokui.Sample016 の クラス throws ServletException, IOException { ^ エラー 8 個 …EclipseでTomcatを起動したときは問題なく動くんですけど、コマンドプロンプトからjavacだと動きません。 多分、classpathの設定に問題があるんでしょうけど、servlet-api.jarとjsp-api.jarへのclasspathはちゃんと設定されています: >set classpath CLASSPATH=.;C:\Program Files (x86)\Java\jre6\lib\ext\QTJava.zip; C:\Program Files (x86)\Java\jdk1.6.0_17\lib\tools.jar; C:\apache-tomcat-6.0.26\common\lib\servlet-api.jar; C:\apache-tomcat-6.0.26\common\lib\jsp-api.jar; スペック: Windows XP (64-bit) apache-tomcat-6.0.26-windows-x64.zip jdk-6u17-windows-i586.exe jre6 上記の通り、ちゃんと-classpathで指定しているのにエラーが出ます。 後は何を確認すればよいのでしょうか? 必要であれば補足しますので、どうか助けてください。
↧
DBを10件毎に表示ページング処理方法
度重なる質問申し訳ありません。 現在DB操作について学んでいるJava独学者です。 下記のようなソースで一覧表示画面を作成してみました。 この一覧画面をページング処理したいのですが、その方法がよく分からず頭を抱えています。 期待する結果は以下の通りです。 (1)DBの内容を10件ごとに表示し、「Back」「Next」のリンクを使って画面を移動する。 (2)次(もしくは前)に表示する10件がない場合は上記のリンクを非表示としたい。 ※ちなみにDBはPostgreSQLを使用しております。 下記はソースの一部です。 **Srvlet** if(button != null && button.equals("一覧")){ target = "/list.jsp"; CList cList = new CList(); List list = cList.list(); request.setAttribute("SELECT", list); } **JSP** <%@page contentType="text/html; charset=Windows-31J" %> <%@page import="java.util.*" %> <%@page import="XXXX.bean.Bean" %> <%@page import="XXXX.service.CList" %> <%@page import="XXXX.service.Search" %> <jsp:useBean id="SELECT" class="java.util.ArrayList" scope="request"/> <HTML> <HEAD> //省略// </HEAD> <BODY> <BR> <% ArrayList array = (ArrayList)request.getAttribute("SELECT"); for(int i=0 ; i<array.size() ; i++){ Bean bean = (Bean)array.get(i); %> <TR> <TD><INPUT type="radio" name="radio" value="<%= (int)bean.getId() %>" <%= bean == array.get(0) ? "checked" : ""%>></TD> <TD><%= (int)bean.getId() %></TD> <TD><%= (String)bean.getName() %></TD> <TD><%= (String)bean.getTel() %></TD> </TR> <%} %> </TABLE> </TD> </TR> </TABLE> </FORM> </DIV> <a href=""> <font color="#0000ff"><b>Back</b></font></a> <a href=""> <font color="#0000ff"><b>Next</b></font></a> **CList.java** DBAccess db = new DBAccess(); db.open(); String SQL = "SELECT*FROM LIST ORDER BY ID ASC;"; db.setSql(SQL); ResultSet rs=db.select(); List list = new ArrayList(); while (rs.next()) { Bean bean = new Bean(); bean.setId(rs.getInt("ID")); bean.setName(rs.getString("NAME")); bean.setTel(rs.getString("TEL")); list.add(bean); } rs.close(); db.close(); return list; } } 色々調べた結果、SQL文を使う方法とArrayList等に格納する方法があるようですが、 どちらも良く理解出来ませんでした。 勉強不足で申し訳ありませんが、ご教授お願いいたします。
↧
java spring でエラーが出て困ってます
spring 超初心者です。cloudfoundyでcronを実行しようとしています。 CronService から@Autowiredで、StartJob_cを呼び出し 更に呼び出されたStartJob_cから、@AutowiredでReadFile_cを呼び出そうとしています。 しかし、Injection of autowired dependencies failed; nested exception というエラーが出て動きません。 質問1)このような、呼び出しはできないのでしょうか? 質問2)springでこのような、呼び出しをしたい場合、どうするのが良いのでしょうか? エラー内容は、 [ERROR] [main 11:08:03] (ContextLoader.java:initWebApplicationContext:220) Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cronService': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.krams.tutorial.job.StartJob org.krams.tutorial.job.CronService.startJob; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'syncStartJob': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.krams.tutorial.job.ReadFile org.krams.tutorial.job.StartJob_c.readFile_cService; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [org.krams.tutorial.job.ReadFile] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} です。 ロジックサンプルは、以下の通りです。 @Service public class CronService implements Cron{ protected static Logger logger = Logger.getLogger("service"); @Autowired @Qualifier("syncStartJob") private StartJob startJob; @Scheduled(cron="*/10 * * * * ?") public void doSchedule() { logger.debug("cron"); startJob.jobExec(); } } @Component("syncStartJob") public class StartJob_c implements StartJob{ protected static Logger logger = Logger.getLogger("service"); //@Autowired //private StartJob2 startJob2_cService; @Autowired private ReadFile readFile_cService; @Autowired private DeleteFile deleteFile_cService; @Autowired private ShinchokuFile1LineDel shinchokuFile1LineDel_cService; public void jobExec() { // TODO Auto-generated method stub logger.debug("StartJob"); List<String> strYMDStartArray = new ArrayList(); strYMDStartArray.add("20060701");//0 1 strYMDStartArray.add("20060501");//1 2 strYMDStartArray.add("20060301");//2 3 strYMDStartArray.add("20060101");//3 4 strYMDStartArray.add("20051101");//4 5 strYMDStartArray.add("20050901");//5 6 String strFileName = ""; List<Integer> AYMDCNTData = new ArrayList(); strFileName = "YMDCNT"; AYMDCNTData = this.readFile_cService.readIntData(strFileName); int intYMDCNT = AYMDCNTData.size(); List<Integer> ACNTData = new ArrayList(); strFileName = "JobCNT"; ACNTData = this.readFile_cService.readIntData(strFileName); int intJobCNT = ACNTData.size(); String strYMDStart = ""; String strYMDEnd = ""; int intYMDID = 0; int intJobCounter = 11; intJobCounter = intJobCounter + intJobCNT; String sTrailJoken_start = ""; String sTrailJoken_end = ""; String sTrailGaku_start = ""; String sTrailGaku_end = ""; if( intJobCounter == 11){ sTrailJoken_start = "10"; sTrailJoken_end = "10"; sTrailGaku_start = "5000"; sTrailGaku_end = "5000"; }else if(intJobCounter == 12){ sTrailJoken_start = "10"; sTrailJoken_end = "10"; sTrailGaku_start = "10000"; sTrailGaku_end = "10000"; }else if(intJobCounter == 13){ sTrailJoken_start = "10"; sTrailJoken_end = "10"; sTrailGaku_start = "15000"; sTrailGaku_end = "15000"; }else if(intJobCounter == 14){ sTrailJoken_start = "10"; sTrailJoken_end = "10"; sTrailGaku_start = "20000"; sTrailGaku_end = "20000"; }
↧
return文が指定されていませんと出てくる
javaの、というかパソコンの超初心者です。 じゃんけんゲームを作るのに、変数「3」を入力したらループから出て終了してもらえるように下記の文のelse if ~を追記したところ、これまでコンパイルできていたのに You.java:24: エラー: return文が指定されていません } と出てきてしまいます。 return;やreturn true; 、false等入力したものの変わらず、何をどこに追記すればいいのかわからないままです。 とてつもなく初歩的な部分かと思いますがどなたかご教授いただけますでしょうか... import java.util.*; public class You extends Player { public Hand nextHand() { Scanner scanner = new Scanner(System.in); while (true) { System.out.print("何を出しますか? グー:0 チョキ:1 パー:2 終了:3 > "); try { int hand_number = Integer.parseInt(scanner.nextLine()); if (0 <= hand_number && hand_number <= 2) { return Hand.fromInt(hand_number); } else if (hand_number == 3){ System.out.println("終了します。"); break; } else { System.err.println("範囲外の数字が入力されています。"); } } catch (NumberFormatException e) { System.err.println("数字以外が入力されています"); } } } }
↧
↧
jspのテキストボックスの値保持について
jspにおける、値の保持についての質問です。 以下のjsp内テキストボックスに値を入れ、その値を元に検索する、というものです。 jspです <form name = "form_serchList" method ="post" action ="BookSrv" > 書籍名検索 <br> 書籍名をどうぞ<input type = "text" name = "serchWord"> <input type = "hidden" name = "serch" value = "serch"> <input type="submit" value="検索"> </form> servletです // 一覧/検索画面の検索を押した際の処理 }else if("serch".equals(serch)){ // 検索したい言葉を取得 String serchWord = request.getParameter("serchWord"); // セレクト処理を呼ぶ List<BookBean>list_ = bd.selectOrSerch(con_,serchWord); // ジャンル一覧をリクエストスコープに格納 request.setAttribute("BOOK_LIST",list_); address = LIST; その際、例えば「ア」を入れて検索した場合検索は可能ですが、テキストボックス内の「ア」は消えてしまいます。これを、「ア」を消さずに保持しておく、というやり方について、どなたか教えて頂けないでしょうか?よろしくお願い致します。
↧
サーブレットからArrayListにBeanを格納しJSPで使用する方法
はじめまして、以下の問題ですが、わからず困っているので 質問させていただきます。 PCはWindowsXPで Eclipse Version: 3.4.1を使用し Tomcat5.5,jre6を使用しています。 研修の課題なのですが サーブレット内でBeanをArrayListを使って、動的確保したものを JSPに渡し、ArrayListに入ったBeanを取り出し、 そのBeanにsetした値を表示させるというプログラムを作っています。 JSPの部分がまったくわかりません。 JSPに配列はわたったようなのですが、JSPでのArrayListの取り出し方 などが、調べてもまったく解決しません。 もしわかる方がいましたら、教えてください。よろしくお願いします。 内容は以下です。 ///////////サーブレット//////////////////////////// ArrayList<Beans> beansid = new ArrayList<Beans>(); i=0; while(rs.next()){ sid = rs.getInt("sid"); sname = rs.getString("sname"); spass = rs.getString("spass"); Beans inbean = new Beans(); inbean.setsid(sid); inbean.setsname(sname); inbean.setspass(spass); beansid.add(inbean); } request.setAttribute("beansid",beansid); //Beansクラス///////////////////// public class Beans{ private int sid; private String sname; private String spass; public int getsid(){ return sid; } public void setsid(int sid){ this.sid = sid; } public String getsname(){ return sname; } public void setsname(String sname){ this.sname = sname; } public String getspass(){ return spass; } public void setspass(String spass){ this.spass = spass; } } //JSPのコード///////////////////////////////// <%@page contentType="text/html; charset=Shift_JIS" pageEncoding="Shift_JIS" %> <jsp:useBean class="java.util.ArrayList" id="beansid2" scope="request"/> <jsp:useBean class="java.lang.String" id="beansid" scope="request"/> <%@page import="keiji.Beans"%> <%@page import= "java.util.*" %> <%@page import="java.sql.*"%> <%@page import="javax.servlet.*"%> <%--下のclassの所はBeansというのでも試してみました。--%> <jsp:useBean class="java.util.ArrayList" id="beansid2" scope="request"/> <%-- ArrayList beansid = (ArrayList)request.getAttribute("beansid"); --%> <%-- Iterator it = beansid.Iterator(); --%> ArrayList Iteratorと使ってみたのですが、 自分にはわけが分からず、JSPを実行したとき、処理がとまってしまいます。
↧
簡単なマインスイーパーをJavaで作りたいです。
Javaの勉強をしたいと思い下のソースのマインスイーパーを ウィンドウ上で実行できるようにしたいです。 そのときに他のソースから呼び出す形にしたいです。 どのようにしたら良いでしょうか?教えてください。 出来ればソースがあるとありがたいです。 import java.util.Scanner; public class MineSweeper extends MinePrinter { public static void main(String[] args) { Scanner sc = new Scanner(System.in); MineSweeper game = new MineSweeper(); game.displayStrblock(); while (!game.dead) { System.out.println("\n:爆弾数・・・" + game.mines); System.out.println("\n:場所を選んでください"); System.out.println("縦の場所の数字を入力"); int tate = Integer.parseInt(sc.next()); System.out.println("横の場所の数字を入力"); int yoko = Integer.parseInt(sc.next()); game.mineClick(tate, yoko); game.displayStrblock(); } } } class MinePrinter { String[][] strblock = new String[5][5]; int[][] blocks = new int[5][5]; int mines = 0; boolean dead = false; public MinePrinter() { mineSet(); } void mineClick(int i, int j) { if (aroundManyMines(i, j) == 99) { System.out.println("burst!!!"); System.out.println("You Dead!!\n"); strblock[i][j] = "*"; dead = true; } else { strblock[i][j] = Integer.toString(aroundManyMines(i, j)); } } void mineSet() { for (int i = 0; i < blocks.length; i++) { for (int j = 0; j < blocks[i].length; j++) { if (Math.random() < 0.2) { blocks[i][j] = 99; mines += 1; } else { blocks[i][j] = 0; } } } for (int i = 0; i < strblock.length; i++) { for (int j = 0; j < strblock.length; j++) { strblock[i][j] = "#"; } } } void displayStrblock() { for (int i = 0; i < strblock.length; i++) { for (int j = 0; j < strblock.length; j++) { System.out.print(strblock[i][j] + " "); } System.out.println(":" + i); } } int aroundManyMines(int i, int j) { if (blocks[i][j] == 99) { return 99; } int ans = 0; for (int r = -1; r <= 1; r++) for (int c = -1; c <= 1; c++) { try { if (blocks[i + r][j + c] == 99) { ans += 1; } } catch (ArrayIndexOutOfBoundsException e) { continue; } } return ans; } }
↧