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

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

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

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

Q&A

解決済

1回答

2055閲覧

jspで誕生日を入力したら年齢を割り出せるプログラムを実装したいです。

bpshikatei

総合スコア1

Java

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

0グッド

0クリップ

投稿2021/11/22 19:39

編集2021/11/22 20:19

前提・実現したいこと

javaのjspファイルで誕生日を入力したら年齢を割り出せるシステムを作りたいです。
ここに質問の内容を詳しく書いてください。
javaでjspを勉強しています。自分の誕生日を入力したら年齢を割り出せるようにしたいのですがうまくいきません。入力画面と出力画面のhtmlはかけたのですがjavaのコードを埋め込むとエラーが出てしまいます。これにどうプログラムを埋め込んでいいかわかりません。どこの部分がどうダメかというのがわからないので僕が用意したjavaのコードとhtmlのコードを組み合わせてほしいです。

エラーメッセージ

HTTPwatt500

1 2HTTPwatt500- 3入力例外レポート 4 5メッセージ 6 7説明 サーバは、この要求を満たすのを防ぐ内部エラー()が発生しました。 8 9たち 10 11org.apache.jasper.JasperException:JSPのクラスコンパイルコンパイラ: 12 13生成されたJavaファイルの7行目でエラーが発生しました 14インポートできるのはタイプのみです。java.util.Calenderはパッケージに解決されます 15 16スタックトレース: 17 org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92) 18 org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330) 19 org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:439) 20 org.apache.jasper.compiler.Compiler.compile(Compiler.java:349) 21 org.apache.jasper.compiler.Compiler.compile(Compiler.java:327) 22 org.apache.jasper.compiler.Compiler.compile(Compiler.java:314) 23 org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:592) 24 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317) 25 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) 26 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) 27 javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 28注意の すべてのスタックトレースは、Apache Tomcat /6.0.29のロックにスタックトレース 29 30Apache Tomcat / 6.0.29 31### 該当のソースコード 32ファイル名question1.jsp(入力画面) 33<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 34<% request.setCharacterEncoding("UTF-8"); %> 35 36<HTML> 37 <HEAD> 38 <META HTTP-EQUIV ="content-type" 39 CONTENT="text/jsp;charset=UTF-8"> 40 <TITLE>サーブレットへデータ送信</TITLE> 41 </HEAD> 42 <BODY BGCOLOR="#FFFFFF"> 43 question1.jsp 44 <BR> 45 <FORM METHOD="POST" ACTION="/JV16/answer1.jsp"> 46 <CENTER><H1>アンケート画面<BR> 47 48 </H1><BR><BR> 49 お名前:<INPUT NAME="NAMAE"><BR> 50 <BR> 51 郵便番号:<INPUT TYPE="TEXT" NAME="YUUBINBANGOU" SIZE=5 VALUE=""><BR> 52 <BR> 53 住所:<INPUT NAME="ZYUUSHO"><BR> 54 <BR> 55 電話番号:<INPUT TYPE="TEXT" NAME="DENWABANGOU" SIZE=5 VALUE=""><BR> 56 <BR> 57 性別: 58 <INPUT TYPE="RADIO" NAME="SEIBETU" VALUE=1>男性 59 <INPUT TYPE="RADIO" NAME="SEIBETU" VALUE=2>女性 60 <BR><BR> 61 生年月日(年): 62 <INPUT TYPE="NUNBER" NAME="TOSHI" SIZE=5 VALUE=""> 63 64 <BR><BR> 65 生年月日(月): 66 <INPUT TYPE="NUNBER" NAME="TUKI" SIZE=5 VALUE=""> 67 <BR><BR> 68 生年月日(日): 69 <INPUT TYPE="NUNBER" NAME="HI" SIZE=5 VALUE=""> 70 <BR><BR> 71 <INPUT TYPE="SUBMIT" VALUE="送信"><BR><BR> 72 </CENTER> 73 </FORM> 74 <HR> 75 </BODY> 76</HTML> 77 78ファイル名answer1.jsp(出力画面) 79<%@ page language="java" contentType="text/jsp; charset=UTF-8" pageEncoding="UTF-8"%> 80<%@ page import="java.util.Date" %> 81<%@ page import="java.util.Calender" %> 82<% request.setCharacterEncoding("UTF-8"); %> 83 84<% 85 String namaeStr = request.getParameter("NAMAE"); 86 String yuubinbangouStr = request.getParameter("YUUBINBANGOU"); 87 String zyuushoStr = request.getParameter("ZYUUSHO"); 88 String denwabangouStr = request.getParameter("DENWABANGOU"); 89 String seibetuStr = request.getParameter("SEIBETU"); 90 String toshiStr = request.getParameter("TOSHI"); 91 String tukiStr = request.getParameter("TUKI"); 92 String hiStr = request.getParameter("HI");%> 93<% 94 95 int b_yy = Integer.parseInt(toshiStr); 96 int b_mm = Integer.parseInt(tukiStr); 97 int b_dd = Integer.parseInt(hiStr); 98%> 99<HTML> 100 <HEAD><TITLE>answer1.jsp</TITLE> 101 </HEAD> 102 <BODY> 103 answer1.jsp 104 <CENTER><H1>入力確認画面 105 <BR><BR> 106 お名前 <%=namaeStr%> 107 <BR> 108 郵便番号 <%=yuubinbangouStr%> 109 <BR> 110 住所 <%=zyuushoStr%> 111 <BR> 112 電話番号 <%=denwabangouStr%> 113 <BR> 114 <%if(seibetuStr.equals("1")){%> 115 性別 男性 116 <%}else{%> 117 性別 女性 118 <%}%> 119 <BR> 120 生年月日 <%=toshiStr%>年<%=tukiStr%>月<%=hiStr%>日 121 <BR> 122 年齢 才 123 </H1></CENTER> 124 <HR> 125 <A HREF="/JV16/question1.jsp">戻る</A> 126 </BODY> 127</HTML> 128```ここに言語名を入力 129ソースコードjava 130 131 132### 試したこと 133 134ここに問題に対して試したことを記載してください。 135自分なりにいろいろやりましたがうまくいきませんでした。``````ここに言語を入力 136ここに言語を入力

コード

### 補足情報(FW/ツールのバージョンなど) ecliseというソフトで作ってます。window10使ってます。 javaの誕生日を入力したら年齢を割り出すコードです。 import java.io.*; import java.util.Date; import java.util.Calendar; public class sample52{ public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("誕生日の西暦を入力してください"); String str = br.readLine(); int b_yy = Integer.parseInt(str); br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("誕生日の月をしてください"); str = br.readLine(); int b_mm = Integer.parseInt(str); br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("誕生日の日をしてください"); str = br.readLine(); int b_dd = Integer.parseInt(str); toshi obj = new toshi(); int kekka = obj.nenrei(b_yy,b_mm,b_dd); System.out.println(kekka + "才"); } } import java.util.Date; import java.util.Calendar; 2つ目 public class toshi{ int nenrei(int b_yy,int b_mm,int b_dd){ int kekka; Date today = new Date(); //現在日時取得 //Calendarクラスオブジェクト生成 Calendar cal = Calendar.getInstance(); //現在日付取得 cal.setTime(today); int yy = cal.get(Calendar.YEAR); int mm = cal.get(Calendar.MONTH)+1; int dd = cal.get(Calendar.DATE); int age = yy - b_yy; if(mm < b_mm){ age = age - 1;} else if(mm == b_mm){ if(dd < b_dd){ age = age - 1; } } return age; } } どなたかお願いします

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

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

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

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

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

m.ts10806

2021/11/22 20:07

コードやエラーはマークダウンのcode機能を利用してご提示ください。 https://teratail.com/questions/238564 あと、出ているエラーは何でしょう。 >eclipsというソフト eclipseです。 >サーブレットはtomcatさんです 表現の意図が謎ですが、サーブレットはJavaのサーバーサイドアプリケーションを作る仕組みで、TomcatはWebサーバーの一種です。 >window10使ってます。 一応、Javaはマルチプラットフォームですし、OSはあまり関係ないです(どのように構築したかは必要ですし、JavaにしてもTomcatにしてもバージョンはあった方が良いです) あと、これは自身で書かれたコードではないですか? 理解できてたらそこまでの問題ではないように思います。
bpshikatei

2021/11/23 01:34

アドバイスありがとうございます。自分はまだまだ初心者なのでこれからもがんばっていきます!
guest

回答1

0

ベストアンサー

Java で書いたプログラムは動いたのに、JSP では動かない、という事だと思うので、両者をよーく見比べてみると・・・

java.util.Calend[a]r(Java 版)
java.util.Calend[e]r(JSP 版)
※ 私もよく間違えます

なお、年齢計算を toshi クラスで行いたいのであれば、次の修正が必要となるでしょう:

  • toshi.nenrei() を public にする

public int nenrei(int b_yy, int b_mm, int b_dd)

  • toshi を適当なパッケージに移す(test.toshi 等にする)

package test;

  • answer1.jsp に import する

<%@ page import="test.toshi" %>

  • answer1.jsp の該当箇所で出力する

<%=new toshi().nenrei(b_yy, b_mm, b_dd)%>

また、toshi.java の配置場所はここになります:
イメージ説明

投稿2021/11/22 23:17

編集2021/11/23 00:39
momodx

総合スコア185

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

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

bpshikatei

2021/11/23 01:38

アドバイスありがとうございます。これからはもっと自分なりに試してから質問します!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問