javaで画像をランダムに表示させる

このQ&Aのポイント
  • javaで使用する画像をランダムに表示させる方法について質問です。
  • ローカルホスト上で三角形をクリックすると、ランダムに画像が表示されない問題が発生しています。
  • どのように修正すれば正常にランダムな画像が表示されるようになるでしょうか?
回答を見る
  • ベストアンサー

javaで画像をランダムに表示させたい

ローカルホストで下の三角形をクリックするとランダムに表示されるのですが、 何も表示されません。どうすればよいでしょうか? jsp <%@page contentType="text/html; charset=Windows-31J"%> <HTML> <BODY> <HR> <H2 td align="center" >くじを引いてください</H2></TR> <P td align="center"></TR> <img src="http://www.kk-mind.com/image/hls.jpg" > <BR> <A HREF="../servlet/input.OmikuziServlet"> <img src="http://www.misedas.net/item_images/item_group/l/5007/1418.jpg" NAME="text1" > </A> <HR> </FORM> </BODY> </HTML> JAVA import java.io.IOException; import java.io.PrintWriter; import java.util.Random; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class OmikuziServlet 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 msg = request.getParameter("text1"); try{ int x = Integer.parseInt(msg); x = (int)(Math.random() * 5) + 1; String strResult = ""; //結果格納用 //数値によって画像を決定 switch(x){ case 0: strResult = "車"; out.println("<HTML>"); out.println("<HEAD>"); out.println("<HR>"); out.println("<title>サンプル15-IMG</title>"); out.println("<img src=\"http://www.yousaydo.com/shopimages/yousaydo2nd/016006000239.jpg\">"); out.println("<HR>"); out.println("</BR>"); out.println("</BODY>"); out.println("<HTML>"); break; case 1: strResult = "マグカップ"; out.println("<HTML>"); out.println("<HEAD>"); out.println("<HR>"); out.println("<title>サンプル15-IMG</title>"); out.println("<img src=\"http://image.rakuten.co.jp/world-chara/cabinet/kanai05/img56469445.jpg\">"); out.println("<HR>"); out.println("</BR>"); out.println("</BODY>"); out.println("<HTML>"); break; case 2: strResult = "スリッパ"; out.println("<HTML>"); out.println("<HEAD>"); out.println("<HR>"); out.println("<title>サンプル15-IMG</title>"); out.println("<img src=\"http://item.shopping.c.yimg.jp/i/j/net-shibuya_ky92601\">"); out.println("<HR>"); out.println("</BR>"); out.println("</BODY>"); out.println("<HTML>"); break; case 3: strResult = "コップ"; out.println("<HTML>"); out.println("<HEAD>"); out.println("<HR>"); out.println("<title>サンプル15-IMG</title>"); out.println("<img src=\"http://ec2.images-amazon.com/images/I/31xeukC9NiL._SL500_AA300_.jpg\">"); out.println("<HR>"); out.println("</BR>"); out.println("</BODY>"); out.println("<HTML>"); break; case 4: strResult = "リラック間人形"; out.println("<HTML>"); out.println("<HEAD>"); out.println("<HR>"); out.println("<title>サンプル15-IMG</title>"); out.println("<img src=\"http://www.san-x.co.jp/relaxuma/campaign/img/59/h5_img05.gif\">"); out.println("<HR>"); out.println("</BR>"); out.println("</BODY>"); out.println("<HTML>"); break; case 5: strResult = "筆箱"; out.println("<HTML>"); out.println("<HEAD>"); out.println("<HR>"); out.println("<title>サンプル15-IMG</title>"); out.println("<img src=\"http://www.zakka-bungu.com/site_data/cabinet/py33501-12_1.jpg\">"); out.println("<HR>"); out.println("</BR>"); out.println("</BODY>"); out.println("<HTML>"); break; } } catch (NumberFormatException e){ System.out.println("入力が正しくありません"); } } }

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

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

> ローカルホストで下の三角形をクリックするとランダムに表示されるのですが、何も表示されません。 すみません。おっしゃる意味がわかりません。 結局、表示されるのですか?されないのですか? ・ローカルホストで...表示されるのですが、『公開サーバーでは』何も表示されません ・...表示される『はずのプログラムな』のですが、何も表示されません どちらの意味なのでしょうか?それとも、これ以外の意味なのでしょうか? また、表示されないのは、前半のJSP(と言っても、これは実質ただのHTML)でしょうか?後半のservletでしょうか? http環境はちゃんと設定できているのでしょうか? Hello,Worldのような単純なservletでの動作確認くらいはできているのでしょうか? そのあたりがはっきりしないと、考えようがありません。 > int x = Integer.parseInt(msg); ここで例外が発生して、catchへ飛んでるのではないですか? http://docs.oracle.com/javase/jp/1.5.0/api/java/lang/Integer.html#parseInt%28java.lang.String%29 には、引数は10進整数の文字列でなければならないとあります。 msgは「String msg = request.getParameter("text1"); 」とあります。JSPを見ても、text1にそのような数字が入るようには見えません。 System.out.printlnが使われているので、htmlとしては出力されません。htmlサーバーのログに残ってませんか? あと、直接は関係ないことですが ○ HTMLが無茶苦茶です。正しく書きましょう。 ○ 画像を勝手に使ってないですか?自由素材でも無いものを勝手に使うのはルール違反です。 ○ x = (int)(Math.random() * 5) + 1; では、xは0にはなりません。よって、case 0:は使われません。

関連するQ&A

  • キャプション付きの複数画像を複数ランダムに表示

    タイトルの通りなのですが、キャプションなしは検索して分かったのですが、キャプション付きだと分かりません。どなたかお教えください。 参考にしたプログラムは、以下の通りです。 <HTML> <HEAD> <TITLE></TITLE> <script language="javascript"> <!--// var arrImage = new Array( "img/img0.jpg", "img/img1.jpg", "img/img2.jpg", "img/img3.jpg", "img/img4.jpg"); var arrLink = new Array( "01.html", "02.html", "03.html", "04.html", "05.html"); var arrFlag = new Array(999,999,999); function Show(){ document.imgNumber1.src = arrImage[StartRandom(0)]; document.links[0].href = arrLink[nTemp]; document.imgNumber2.src = arrImage[StartRandom(1)]; document.links[1].href = arrLink[nTemp]; document.imgNumber3.src = arrImage[StartRandom(2)]; document.links[2].href = arrLink[nTemp]; } var nTemp, nLoop; function StartRandom(nIndex){ nLoop = 0; nTemp = Math.round(Math.random()*(arrImage.length-1)); if (nIndex != 0){ for (nLoop = 0; nLoop < nIndex ; nLoop++){ if (nTemp == arrFlag[nLoop]){ StartRandom(nIndex); } } } arrFlag[nIndex] = nTemp; return nTemp; } //--> </script> </HEAD> <BODY onLoad="Show()"> <a href="01.html"><IMG name="imgNumber1" src="img/img1.jpg" width="170" height="170" border="0"></a> <a href="02.html"><IMG name="imgNumber2" src="img/img2.jpg" width="170" height="170" border="0"></a> <a href="03.html"><IMG name="imgNumber3" src="img/img3.jpg" width="170" height="170" border="0"></a> </BODY> </HTML> <BODY>から</BODY>のプログラムでなぜ表示できるかもよくわかっていません。(これについてはおいおい学ぶとして、できればとっかかりのヒントをお願いします) あと、スクリプトが利かない場合の表示は、<NOSCRIPT>~</NOSCRIPT>で間に変わりのものを書けばいいのでしょうか。 すいませんが、よろしくお願いします。

    • ベストアンサー
    • HTML
  • HTMLからデータを受け取るサーブレットについて

    教本の教え通りにコードを記述してるつもりなんですが,うまくいきません。コンパイルもうまくいきtomcatでHTML画面からデータを送信してもサーブレットはうまく応えてくれません。どなたか教えてください。 (fromhtml_365.java) import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class fromhtml_365 extends HttpServlet{ public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException,IOException{ res.setContentType("text/html; charset=shift_JIS"); PrintWriter out = res.getWriter(); out.println("<html><head>"); out.println("<title>サーブレットからパラメータを受信</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>受信したパラメータ</h1>"); out.println("<h2>"); out.println(req.getParameter("param")); out.println("</h2>"); out.println("</hody></html>"); } } (html_366.html) <HTML> <HEAD><TITLE>サーブレットにパラメータを送信</TITLE></HEAD> <BODY> <H1>サーブレットにパラメータを送信</H1> <FORM ACTION="/examples/servlet/fromhtml_365"> 送信パラメータ<INPUT TYPE="TEXT" NAME="param"><BR> <INPUT TYPE="SUBMIT" value="送信"> </FORM> </BODY> </HTML>

    • ベストアンサー
    • Java
  • html内かscript内で画像出力。どちらが軽い

    ホームページの読み込みは、画像を使えば使うほど重くなってしまいます。 下記コードでは、(1)と(2)で1.jpg~5.jpgの画像をページに出力しています。 (1)はHTMLに、(2)はscript内に、 (1)と(2)では(2)の方がhtmlに<img src=".jpg" width="800" height="300"/> と書かなかった分、ページが重くならない、ということになりますか? <html> <head> <title>HTML上に直接imgを出力した場合</title> </head> <body> <img src="1.jpg" width="800" height="300"/> <img src="2.jpg" width="800" height="300"/> <img src="3.jpg" width="800" height="300"/> <img src="4.jpg" width="800" height="300"/> <img src="5.jpg" width="800" height="300"/> </body> </html> <html> <head> <title>HTML上にはimgを出力せず、script内でimgを出力した場合</title> <script language="JavaScript"> var imgSanple = new Array( "1.jpg", "2.jpg", "3.jpg", "4.jpg", "5.jpg"); var randomSelect = Math.floor((Math.random() * 100)) % imgSanple.length; var i = "<img src='"+imgSanple[randomSelect]+"' width='800' height='300'>"; document.write(i); // --> </script> </head> <body> <noscript> <img src="1.jpg" width="800" height="300"> </noscript> </body> </html>

  • Tomcatのアプリケーションの呼びでエラー404

    Tomcatのアプリケーションの呼びでエラー404となる ブラウザのURLに下記のコマンドを入力し、   http://localhost:8080/hello/index.html を入力すると下記のようにNGとなる。     何故NGとなるか教えてください。 ●コマンド: http://localhost:8080         メッセージ(OK): 一覧表示する。   ●コマンド: http://localhost:8080/hello/index.html ●メッセージ(NG): ype ステータスレポート メッセージ /hello/index.html ● 説明 The requested resource is not available. ●私の環境項目  Os windows 8.1    プログラム: java SE Development kit 8_ Tomcatバ-ジョン:tomcat6.0 ●Hello.xmlディレクトリ: C:\Program Files\Apache Software Foundation\Tomcat 6.0\conf\Catalina\localhost\hello.xml ●Hello.xml の内容:   Context path="\hello" docBase="c:\servlet-sample\helloworld"/> ●Indexディレクトリ:  C:\servlet-sampl\helloworld\index.html ●Index.htmの内容: <html> <head><title>HelloWorld</title></head> <body> <br> <img src="./img/p1.png"> <a href="/hello/helloworld">クリックして下さい</a> <br> </body> </html> ●hellWorldディレクトリ:   C:\servlet-sampl\helloworld\WEB-INF\classes ●HellWord.java(class)の内容: 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>"); } }

  • classファイルが作成されない

    コマンドを使ってjavaを実行しclassファイルを作成しようとしているのですが、実行できません。 実行したいパターンとしてhtml→javaファイルを呼び出す形にしたいのですが、クラスファイルができません。 javaファイルの存在する箇所に設定し,javac srv_escape.javaを記入すると 以下のエラーが出ました。このときの解決策はどのようにすればいいのでしょうか? Exception in thread "main" java.lang.NoClassDefFoundError:com/sun/tools/javac/Main と出ます。 他のQ&Aを見たりはしてたのですがよくわからなかったので質問しました。 このときの状態としてjavaソースの場所はC:\Program Files\Apache Tomcat 4.0\webapps\jsp10でjavac.exeファイルあり。 htmlファイルはC:\Program Files\Apache Tomcat 4.0\webapps\jsp10\day08-2においています。 ソース内容が html <html><head> <title>予約文字のエスケープ></title> </head> <body> <h1>予約文字のエスケープ</h1> <form name="POST" action=/jsp/servlet/srv_escape"> 入力文字: <input type="text" name="esc" size="30" /> <input type="submit" value="送信" /> </form> </html> java import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class srv_escape extends HttpServlet { int i; public void doPost(HttpServletRequest request, HttpServletResponse response ) throws ServletException,IOException { response.setGontentType("text/html;charset=Shift_JIS"); PrintWriter out=response.getWriter(); out.println("<html><head>"); out.println("<title>予約文字のエスケープ</title>"); out.println("</head><body>"); out.println(<h1>予約文字のエスケープ</h1>"); out.println("入力した文字:"); out.println(strEscape(request.getParameter("esc"))); out.println("</body></html>"); } private String strEscape(String strEsc){ StringBuffer strResult=new StringBuffer(); for(int i=0;i<strEsc.length();i++){ switch(strEsc.charAt(i)){ case '&': strResult.append("&amp;"); break; case '<' : strResult.append("&lt;"); break; case '>' : strResult.append("&gt;"); break; default: strResult.append(strEsc.charAt(i)); break; } } return strResult.toString(); } } です。 よろしくお願いします。

    • ベストアンサー
    • Java
  • 画像のランダム表示

    初心者です。。 画像のランダム表示で、下のものを使っているのですが、 画像の上にカーソルをもっていったときに手のマークにしたいのですが、 どのようにすればできるのでしょうか? onclickを使っているからだと思うのですが、 A href=を使えばできるのでしょうか? よろしくお願いします。 <script type="text/javascript"> <!-- var imgs = new Array; var n = 5; var i; for(i=0;i<n;i++){ imgs[i] = new Image(); } imgs[0].src="image/001.jpg"; imgs[1].src="image/002.jpg"; imgs[2].src="image/003.jpg"; imgs[3].src="image/004.jpg"; imgs[4].src="image/005.jpg"; function disp(img){ img.src=imgs[Math.round(Math.random()*(n-1))].src; } //--> </script> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> </head> <body> <div align="center"> <img src="image/001.jpg" border="0" onclick="disp(this)"> </div> </body> </html>

  • Javaによる現在時刻の表示について

    Javaで現在時刻を表示するプログラムを作りました。 今のままだと 2009/8/26(木) 15:8:7となり、 月日・時間分秒が一桁のときは前に0をつけて二桁(15:08:07のように)表示にしたいと思います。 何かいい方法はないでしょうか? if文で作成するとなると、かなりたくさんのコードを書かないといけない気がします。 良い案があれば是非ご教授頂ければと思います。 import java.util.Calendar; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Servlet_106 extends HttpServlet{ public void doGet(HttpServletRequest req,HttpServletResponse res) throws ServletException,IOException{ res.setContentType("text/html; charset=Shift_JIS"); PrintWriter out = res.getWriter(); String title = "現在時刻:"; Calendar cal = Calendar.getInstance(); int year = cal.get(Calendar.YEAR); int month = cal.get(Calendar.MONTH) + 1; int day = cal.get(Calendar.DATE); StringBuffer dow = new StringBuffer(); switch (cal.get(Calendar.DAY_OF_WEEK)){ case Calendar.SUNDAY: dow.append("日"); break; ~~~(略)~~~ } int hour = cal.get(Calendar.HOUR_OF_DAY); int minute = cal.get(Calendar.MINUTE); int second = cal.get(Calendar.SECOND); out.println("<html lang=\"ja\">"); out.println("<head><title></title></head>"); out.println("<body>"); out.println("<p>現在時刻:" + year + "/" + month + "/" + day + "(" + dow + ")" + hour + ":" + minute + ":" + second + "</p>"); out.println("</body></html>"); out.close(); } }

    • ベストアンサー
    • Java
  • javascriptで画像をランダム表示させたい

    javascriptで画像をランダム表示させたいと思い、下記ソースを記述しました。 下記ソースでは、画像をランダムに1枚ずつ表示するようになっています。 今回、1枚ずつではなく、50枚ある画像を10枚ずつランダムに表示させたいと思っています。下記ソースから修整するにはどのような考え方になるのか教えていただけませんか? 単純に、 "img/1.jpg", の部分を "img/1.jpg,img/2.jpg,img/3.jpg,img/4.jpg,img/5.jpg", としてみたのですが違うみたいですし、、。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>20110720test</title> </head> <body> <script language="JavaScript"><!-- myImageCnt = 5; myImage = new Array( "img/1.jpg", "img/2.jpg", "img/3.jpg", "img/4.jpg", "img/5.jpg" ) myRnd = Math.floor(Math.random()*myImageCnt); document.write("<img src='",myImage[myRnd],"' border='0' >"); // --></script> </body> </html>

  • JAVAの初心者です。

    import java.io.*; class Sample1 { public static void main(String args[])throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); do{ System.out.println("1:入力文字整数確かめ"); System.out.println("2:終了"); String hako = br.readLine(); int sen = Integer.parseInt(hako); switch (sen){ case 1: System.out.println("整数を入力してください。"); String hako2 = br.readLine(); int hako3 = Integer.parseInt(hako2); if ((hako3%2)==0){ System.out.println("これは偶数ですね。"); } System.out.println("奇数ですね。"); break; case 2: System.out.println("終了いたします。"); break; } }while(sen != 2); } } 上記のように組んだのですが、}whileのところでエラー が出てしまうのです。 これってなぜなのでしょう?? 初心者特有の質問かもしれませんがご教授いただけたら嬉しいです。宜しくお願いいたします。 関係ないのかも知れませんがJDK1-5-006を使用してます。

    • ベストアンサー
    • Java
  • 画像のランダム表示について

    ある方のスクリプトを参考にさせて頂いたのですが、 色々なサイトで調べてみると、どうも他にも色々な方法があるようで、迷っています。 私が書いたスクリプトは、以下の物なのですが、直した方が良い所や、または、お勧めの方法を教えてください。 <SCRIPT language=JavaScript> <!-- function randomimage() { rimage = Math.floor(Math.random() * 10); // if (rimage == 0) { img = "img/top/0.jpg" }; // if (rimage == 1) { img = "img/top/1.jpg" }; // if (rimage == 2) { img = "img/top/2.jpg" }; // if (rimage == 3) { img = "img/top/3.jpg" }; // if (rimage == 4) { img = "img/top/4.jpg" }; // if (rimage == 5) { img = "img/top/5.jpg" }; // if (rimage == 6) { img = "img/top/6.jpg" }; // if (rimage == 7) { img = "img/top/7.jpg" }; // if (rimage == 8) { img = "img/top/8.jpg" }; // if (rimage == 9) { img = "img/top/9.jpg" }; // tag1 = "<IMG SRC='" + img + "' border=0>"; }; // end--> </SCRIPT> <SCRIPT language=JavaScript> <!-- randomimage(); document.write(tag1); // end--> </SCRIPT> これを<BODY></BODY>の間に入れて表示させる物です。