JAVAの課題について

このQ&Aのポイント
  • JAVAの課題について教えてください
  • 入力フォームから二つの数値を入力させ、「計算」ボタンを押すと、二つの数値を含む数値間の奇数のみ足し算するプログラムです。
  • しかし、if文の値がおかしいため、奇数と偶数の判定ができません。
回答を見る
  • ベストアンサー

このJAVAの課題について教えてください

package input; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class jspmodai4Servlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("Windows-31J"); response.setContentType("text/html; charset=Windows-31J"); PrintWriter out = response.getWriter(); String[] nam = request.getParameterValues("text1"); int x = Integer.parseInt(nam[0]); int y = Integer.parseInt(nam[1]); String ans = request.getParameter("radio1"); int z = 0; for(int i = 0; i < z; i++){ } if(ans.equals("value1")){ z = x + y; out.println("奇数の結果は" + z); } }else if (ans.equals("value2") && z%2==0 ){ z = x + y; out.println("偶数の結果は" + z); }else if(x == y){ out.println("エラー"); }else{ out.println("エラー"); } } } 入力フォームから二つの数値を入力させ、「計算」ボタンを押すと、 二つの数値を含む数値間の奇数のみ足し算するプログラム。 でif値がおかしいので奇数と偶数の判定ができません テキストの問題の答えがないので、 なんともいえませんが、 友達に聞いたら、例えば2つの入力フォームで1と4を記述したら、 偶数なら2と4で6となり、奇数なら1と3で4になるそうです。 よろしくお願いします

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

ループも条件も計算式もおかしいように見えますが。

rnjv6535
質問者

お礼

どうも、ありがとうございました。 確認したところ、for文の(int i = 0; i < z; i++){ } であることが分りましたので、 これをint x = 0; i < y; i++) で訂正したところ解決しました。

関連するQ&A

  • javaで課題を出されています

    題名の通りなのですが、javaのプログラミングで課題を出されていて うまく書けません お題としては 1 if分と論理演算を使うこと。 2 forまたはwhileを使用すること 3 メソッドを使用すること。(main以外で) 4 配列を使用すること 以上なのですが、一応昔スロットプログラムを作っていたのでこれをベースに作ろうかなと考えています import java.io.*; public class Slot01{ public static void main(String[] args){ try{ //String line =reader.readLine(); BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); System.out.println("こんにちは!スロットゲームへようこそ!"); System.out.println("EnterKeyを押して当たりを出してくださいね!"); while(true){ //while文は処理を繰り返すためのものです。 // ▽これよりソースを打ち込んでください //try{ int x=(int)(Math.random()*9)+1; int y=(int)(Math.random()*9)+1; int z=(int)(Math.random()*9)+1; int[]kakuritu; int sum; System.out.print(x); System.out.print(y); System.out.print(z); System.out.println(""); String line =reader.readLine(); //System.out.println(""); if(x==7&&y==7&&z==7){ System.out.println("スーパー大当たり"); }else if(x==y&&y==z){ System.out.println("大当たり"); }else if(x==y||y==z||x==z){ System.out.println("小当たり"); }else{ System.out.println("外れ"); } }//while文の終わり }catch (IOException e){ System.out.println(e); }catch (NumberFormatException e){ System.out.println("正しい形式で表示してください。"); } } } このプログラムなのですが、1と2はこの中に入ってます。考えてみたのですが、このプログラムに当たり確率を表示させるプログラムなら3と4も満たせそうなのですが、いまいちソースが思いつきませんのでご教授お願いします。 文章おかしいところだらけで申し訳ありません。

    • ベストアンサー
    • Java
  • ディスパッチャー処理の流れについて

    ************************** package dispa; import java.io.IOException; import javax.servlet.*; import javax.servlet.RequestDispatcher; import javax.servlet.http.*; public class Action extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException { int flag=0; request.setAttribute("error", "エラーです"); ServletContext sc = getServletContext(); if (flag == 1) { request.setAttribute("count","1"); RequestDispatcher disp = sc.getRequestDispatcher("/servlet/dispa.Login"); disp.forward(request,response); return; } // コンソールコメント1 ここから System.out.println("Action if文の外"); System.out.println(flag); // コンソールコメント1 ここまで RequestDispatcher disp = sc.getRequestDispatcher("/servlet/dispa.Entry"); disp.forward(request,response); // コンソールコメント3 ここから System.out.println("Action Dispatch処理終了ライン"); // コンソールコメント3 ここまで } } ************************** package dispa; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Entry extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException { response.setContentType("text/html;charset=Shift_JIS"); PrintWriter out=response.getWriter(); String errorMSG = (String)request.getAttribute("error"); out.println(errorMSG); // コンソールコメント2 ここから System.out.println("Entry エラー"); // コンソールコメント2 ここまで } } ************************** package dispa; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Login extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException { response.setContentType("text/html;charset=Shift_JIS"); PrintWriter out=response.getWriter(); String Logcount = (String)request.getAttribute("count"); out.println("Login"); // コンソールコメント4 Login ここから System.out.println("Login内"); // コンソールコメント4 Login ここまで if (Logcount.equals("1") ) { out.println("1回目のログインです"); return; } } } Action からスタート int flag=0 のときにはif文は実行されず コンソールコメント1 を表示 ディスパッチャーで Entry へ行き コンソールコメント2 を表示 その後 コンソールコメント3 を表示 [END] [質問1] なぜ、Entryサーブレットへ行ったとき、そこには return などの記述はないのに (元の)Actionへ戻るのか? -------------------------------- int flag=1 と可変して同じくAction からスタート flag=1 のときにはif文は実行され count を 1 にセット ディスパッチャーで Login へ行き コンソールコメント4 を表示 Logcount ←count にて 1なら 「1回目のログインです」 return [質問2] なぜ、Loginサーブレットへ行ったとき、そこに わざわざ return の記述をしてるのに (元の)Actionへ戻らないのか? この2つの質問です よろしくお願いします。

  • ディスパッチャー処理の流れについて

    ************************** package dispa; import java.io.IOException; import javax.servlet.*; import javax.servlet.RequestDispatcher; import javax.servlet.http.*; public class Action extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException { int flag=0; request.setAttribute("error", "エラーです"); ServletContext sc = getServletContext(); if (flag == 1) { request.setAttribute("count","1"); RequestDispatcher disp = sc.getRequestDispatcher("/servlet/dispa.Login"); disp.forward(request,response); return; } // コンソールコメント1 ここから System.out.println("Action if文の外"); System.out.println(flag); // コンソールコメント1 ここまで RequestDispatcher disp = sc.getRequestDispatcher("/servlet/dispa.Entry"); disp.forward(request,response); // コンソールコメント3 ここから System.out.println("Action Dispatch処理終了ライン"); // コンソールコメント3 ここまで } } ************************** package dispa; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Entry extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException { response.setContentType("text/html;charset=Shift_JIS"); PrintWriter out=response.getWriter(); String errorMSG = (String)request.getAttribute("error"); out.println(errorMSG); // コンソールコメント2 ここから System.out.println("Entry エラー"); // コンソールコメント2 ここまで } } ************************** package dispa; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Login extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException { response.setContentType("text/html;charset=Shift_JIS"); PrintWriter out=response.getWriter(); String Logcount = (String)request.getAttribute("count"); out.println("Login"); // コンソールコメント4 Login ここから System.out.println("Login内"); // コンソールコメント4 Login ここまで if (Logcount.equals("1") ) { out.println("1回目のログインです"); return; } } } Action からスタート int flag=0 のときにはif文は実行されず コンソールコメント1 を表示 ディスパッチャーで Entry へ行き コンソールコメント2 を表示 その後 コンソールコメント3 を表示 [END] [質問1] なぜ、Entryサーブレットへ行ったとき、そこには return などの記述はないのに (元の)Actionへ戻るのか? -------------------------------- int flag=1 と可変して同じくAction からスタート flag=1 のときにはif文は実行され count を 1 にセット ディスパッチャーで Login へ行き コンソールコメント4 を表示 Logcount ←count にて 1なら 「1回目のログインです」 return [質問2] なぜ、Loginサーブレットへ行ったとき、そこに わざわざ return の記述をしてるのに (元の)Actionへ戻らないのか? この2つの質問です。 同じディスパッチャーで飛ばして 到達先も同じvoid なのですが 片方は(Entry) returnなしでも戻り もう片方は(Login)は return を付けても戻らない??? よろしくお願いします。

  • javaサーブレット sessionの使い方

    sessionを使ってデータの受け渡しをしたいのですが、ページ移動が増えると上手く受け渡せ無くて困っています。 jsp→Servlet のみでテストした時は正常に動いたのですが、ページを増やすと値が上手く更新されないのです。 下のプログラムではjspでセッションを開始して、ボタンを押すことでNS1.javaに移動し値を1増やしてNS2.javaに移動します。NS2.javaでも値を1増やしているので結果的に2つ値が増えるはずなのに1つも増えません。 何が悪いのでしょうか。解決策を教えて下さい。 // NStest.jsp <%@ page contentType="text/html;charset=Windows-31J" %> <html> <head> <title>移動</title> </head> <body> <% // isNewメソッドでセッション管理されているか確認します。 if (session.isNew()) { // セッション管理されていない場合、データを登録します。 session.setAttribute("count", 0); // 初回用メッセージ out.println(" Nice to meet you."); } else { // セッション管理されている場合、データを表示します。 out.println("count: " + session.getAttribute("count")); } %> <form method="POST" enctype="multipart/form-data" action="NS1"> <INPUT type="SUBMIT" name="button1" value="移動"> </form> </body> </html> // NS1.java package NStest; import java.io.*; import javax.servlet.*; import javax.servlet.http.HttpSession; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class NS1 extends HttpServlet { public void doPost (HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { // 出力形式等の設定 ServletContext context = this.getServletContext(); response.setContentType("text/html;charset=Windows-31J"); PrintWriter out = response.getWriter(); HttpSession session = request.getSession(false); String message; if (null == session) { // nullが返ってくる場合はセッションが作成されていない session.setAttribute("count", 0); out.println("セッションが開始されていません。"); } else { // セッションインスタンスからcountの値を取得して表示 // 1加算してふたたび保存 Integer count = (Integer)session.getAttribute("count"); session.setAttribute("count", 1 + count.intValue()); message = "ページカウント: " + count; out.println(message); } // 処理後はNS2.javaにリダイレクト response.sendRedirect("NS2.java"); } } // NS2.java package NStest; import java.io.*; import javax.servlet.*; import javax.servlet.http.HttpSession; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class NS2 extends HttpServlet { public void doPost (HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { // 出力形式等の設定 ServletContext context = this.getServletContext(); response.setContentType("text/html;charset=Windows-31J"); PrintWriter out = response.getWriter(); HttpSession session = request.getSession(false); String message; if (null == session) { // nullが返ってくる場合はセッションが作成されていない session.setAttribute("count", 0); out.println("セッションが開始されていません。"); } else { // セッションインスタンスからcountの値を取得して表示 // 1加算してふたたび保存 Integer count = (Integer)session.getAttribute("count"); session.setAttribute("count", 1 + count.intValue()); message = "ページカウント: " + count; out.println(message); } } }

    • ベストアンサー
    • Java
  • Tomcat6.0 日本語が?に文字化け

    HelloWorld!!はろぅわーるど!! と書いてコンパイルすると、IEの画面で HelloWorld!!????????? と表示されます。 日本語というよりは2バイト文字が文字化けしているのかなと思います。 何が足りないのでしょうか。 どなたかよろしくお願いします。 全文はこんな感じです。 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { PrintWriter out = response.getWriter(); out.println("<html>"); out.println("HelloWorld!!はろぅわーるど!!"); out.println("</html>"); out.close(); } }

  • setAttribute(String, int)は適用できない

    setAttribute(String, int)は適用できない 今、servletでセッションの勉強をしています。 ある本に載っているソースコードをそのままコピーしたんですが、 「HttpSessionのメソッド setAttribute(String, Object)は(String, int)に適用できません。」 …というエラーが出て動きません。 こういう場合、実行するにはどうしたら良いのでしょうか? アクセスした回数をカウントすることなんてよくあると思うんです。 intも(Stringなんかも)Objectの下に含まれてるんじゃないんですか? intでも良い気がするんですけど…。 一応、ソースコードを貼っておきます: ### Sample229TestServlet.java ### package com.tips; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class Sample228TestServlet extends HttpServlet { /** * */ private static final long serialVersionUID = 1L; private int count = 0; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=Shift_JIS"); PrintWriter out = response.getWriter(); HttpSession session = request.getSession(); session.setAttribute("param",count++); //問題の箇所 out.println("<html><head><title>Sample228</title></head><body>"); out.println("<h2>SessionAttributeListenerの例</h2>"); out.println("sessionの属性countが" + count + "に変化しました。"); out.println("</body></html>"); out.close(); } } ### Sample228.java ### package com.tips; import javax.servlet.ServletContext; import javax.servlet.http.HttpSessionAttributeListener; import javax.servlet.http.HttpSessionBindingEvent; public class Sample228 implements HttpSessionAttributeListener { public void attributeAdded(HttpSessionBindingEvent event) { } public void attributeRemoved(HttpSessionBindingEvent event) { } public void attributeReplaced(HttpSessionBindingEvent event) { ServletContext app = (event.getSession()).getServletContext(); app.log(">> Sample228 Listener detects attribute changed."); } } …必要であれば補足します。では、宜しくお願いします。

    • ベストアンサー
    • Java
  • コンパイルエラー

    JBuiderでコンパイルしようとするとエラーがでてしまいます。ソースは以下の通りです。 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class TestServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(); Integer count=(Integer)session.getAttribute("count"); if(count == null){  count = new Integer(0); }else{  count = new Integer(count.intValue()+1); } session.setAttribute("count",count); response.setContentType("text/html; charset=Shift_JIS"); PrintWriter out= response.getWriter(); out.println("<html>"); out.println("<head><title>TestServlet</title></head>"); out.println("<body>"); out.println(session.getId()); out.println("<p>\"count\"という名前のattribute = " + count +"</p>"); out.println("</body></html>"); out.close(); } } これをコンパイルすると、 "TestServlet.java": エラー #: 300 : メソッド getAttribute(java.lang.String) が見つかりません: インターフェース javax.servlet.http.HttpSession 行 9, 列 36 "TestServlet.java": エラー #: 300 : メソッド setAttribute(java.lang.String, java.lang.Integer) が見つかりません: インターフェース javax.servlet.http.HttpSession 行 15, 列 13 というメッセージがでます。何が原因なのか教えてください。

  • Fedora10でHelloWorld.javaをコンパイル

    すると以下のようにエラーがでます。 何が原因でしょうか? /root/HelloWorld.java: import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>Hello World!</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Hello World!</h1>"); out.println("</body>"); out.println("</html>"); } } [root@prime ~]# javac -classpath /usr/share/tomcat6/lib/tomcat6-servlet-2.5-api-6.0.18.jar HelloWorld.java ---------- 1. WARNING in HelloWorld.java (at line 5) public class HelloWorld extends HttpServlet { ^^^^^^^^^^ The serializable class HelloWorld does not declare a static final serialVersionUID field of type long ---------- 1 problem (1 warning) [root@prime ~]# ただし、 /usr/share/tomcat6/lib/tomcat6-servlet-2.5-api-6.0.18.jar に使用したapiクラスは含まれています。 The serializable class HelloWorld does not declare a static final serialVersionUID field of type long の意味を教えてください。

    • ベストアンサー
    • Java
  • このソースのコンパイルできません。

    java, サーブレット初心者でコンパイルできません。エラーは以下のとおりです。 初歩的な質問で申し訳ないですがよろしくお願いします。 http://www.javaroad.jp/opensource/js_tomcat2.htm のページのHelloServlet.javaをコピーしてコンパイルをしようとしたらエラーが、、、。 import java.io.*; import java.text.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<HTML>"); out.println("<BODY>"); out.println(new java.util.Date()); out.println("</BODY>"); out.println("</HTML>"); } } ーーーーーーーーーーーーーーーーーーーーーーーーーーー HelloServlet.java:7: エラー: パッケージjavax.servletは存在しません import javax.servlet.*; ^ HelloServlet.java:8: エラー: パッケージjavax.servlet.httpは存在しません import javax.servlet.http.*; ^ HelloServlet.java:10: エラー: シンボルを見つけられません public class HelloServlet extends HttpServlet { ^ シンボル: クラス HttpServlet HelloServlet.java:11: エラー: シンボルを見つけられません public void doGet(HttpServletRequest request, ^ シンボル: クラス HttpServletRequest 場所: クラス HelloServlet HelloServlet.java:12: エラー: シンボルを見つけられません HttpServletResponse response) ^ シンボル: クラス HttpServletResponse 場所: クラス HelloServlet HelloServlet.java:13: エラー: シンボルを見つけられません throws IOException, ServletException { ^ シンボル: クラス ServletException 場所: クラス HelloServlet エラー6個 エラー

    • ベストアンサー
    • Java
  • java eclipseでのエラーについて

    環境 eclipse tomcat6 javaファイルとweb.xmlを用いており 職業を選択し送信ボタンを押すとあなたの職業はXXXですと表示するはずなのですが HTTPステータス 404がでて困っています どこが間違っているのでしょうか package servlet; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class RadioInput extends HttpServlet{ String html; String html1="<!doctype html><html lang=ja><head><meta charset=utf-8><title>Radioinput</title></head></body>"; String html2="職業をお選びください<form action=Radioinput method=post><table><tr><td><input type=radio name=occupation value=会社員>会社員<br><input type=radio name=occupation value=学生>学生<br><input type=radio name=occupation value=主婦>主婦<br><input type=radio name=occupation value=その他>その他</td></tr></table><br><input type=submit value =送信><input type=reset value=リセット></form></body></html>"; public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{ response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); html=html1+html2; out.println(html); out.close(); } public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{ int numberOfErrors=0; String errorMessage="<div class=alerm>入力値にエラーがありました</div>"; String noRadioValueError="<div class=alerm>「エラー入力値がありません」</div>"; request.setCharacterEncoding("UTF-8"); String occupation=request.getParameter("occupation"); if(occupation==null){ numberOfErrors +=1; errorMessage +=noRadioValueError; } response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); if(numberOfErrors>0){ html = html1+errorMessage+html2; out.println(html); }else{ html=html1+"あなたの職業は"+occupation+"ですね</body></html>"; out.println(html); } out.close(); } }

    • ベストアンサー
    • Java