2013-04-24 90 views
1

我有一个Java服务器页面,可以让用户从1-1000中选择一些他们的选择。该页面然后使用输入的号码并找出号码是否与生成的号码匹配。 - 下面的图片如果^不清楚。目前,每次用户猜测一个号码时,程序都会生成一个不同的号码 - 无论是否正确。我该怎么做才能让程序只在用户刷新页面或猜测正确时才生成一个数字?号猜猜游戏每猜测产生一个不同的数字

JSP代码:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<%@ page import = "Chapter12.RandomGuess" %> 
<jsp:useBean id = "randomGuessId" class = "Chapter12.RandomGuess" scope = "page" > 
</jsp:useBean> 
<jsp:setProperty name = "randomGuessId" property = "*" /> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Guess Random Number</title> 
</head> 
<body> 
<h3>Guess a number from 1 to 1000</h3> 
<form method = "post"> 
    Enter guess: <input name = "guess" /><br /><br /> 
    <input type = "submit" name = "Submit" value = "Take Guess" /> 
    <input type = "reset" value = "Reset" /><br /><br /> 
    Your guess of <jsp:getProperty name = "randomGuessId" property="guess" /> 
    is <%= RandomGuess.guess(randomGuessId.getAnswer()) %> 
    </form> 
</body> 
</html> 

Java代码:

import java.util.Random; 

public class RandomGuess { 
private int guess; 
Random r = new Random(); 
private int low = 1; 
private int high = 1000; 
int R = r.nextInt(high-low) + low; 

public int getGuess() { 
    return guess; 
} 

public void setGuess(int newValue) { 
    guess = newValue; 
} 

public String getAnswer() { 
    String tooLow = "too low."; 
    String tooHigh = "too high."; 
    String correct = "correct!"; 
    if(guess == R) 
     return correct; 
    else if(guess < R) 
     return tooLow; 
    else 
     return tooHigh; 
} 
public static String guess(String s) { 
    return s; 
} 
} 

图片:http://i.imgur.com/dMSZ7SD.png

+0

每当你猜测它可能会产生一个'RandomGuess'的新实例? – John 2013-04-24 20:27:56

回答

1

页面刷新,这个bean的新实例被创建的每个时间 - 用一个新号码。

要在呼叫间保留号码,请在班级中使用静态字段。


更棒的是,使用JavaScript!

+0

谢谢!这工作! – 2013-04-24 21:03:49

0

您可以将用户号码作为查询参数返回。

我猜你不太熟悉MVC模式或Spring,但有足够的资源可以让你快速启动并运行。如果我记得的话,我会在后面尝试制作一个脱机演示。

1

这里找到完整的程序:http://sickprogrammersarea.blogspot.in/2014/01/creating-number-guesser-in-jsp_8296.html

朋友你好,这是创造了JSP一些猜测者的一个简单的程序....看一看......

Number.jsp:

<html> 
<head><title>Number Guesser</title></head> 
<body> 
<%    int num=(int)(Math.random()*100);  %> 
<h2>Welcome To Number Guesser</h2> 
<br><h3>Want To Check Your Guessing Power.....GIVE IT A TRY?????</h3> 
<form name="guess" action="try.jsp?c=0" method="post"> 
<input type="text" name="val" value="<%=num %>" hidden> 
<input type="submit" value="GO"> 
</form> 
</body> 
</html> 

try.jsp:

<html> 
<head><title>Number Guesser</title></head> 
<body> 
<% String str=request.getParameter("val"); 
     boolean flag=true;  
     int num=Integer.parseInt(str); 
     int c=Integer.parseInt(request.getParameter("c")); 
     if(c!=0) 
     { 
        int guess=Integer.parseInt(request.getParameter("guess")); 
        if(num==guess){ 
           flag=false; 
     %> 
        <h3>Congratulation...You Successes After <%=c%> attempts</h3> 
        <b>Want to Improve...<a href="Number.jsp">try again</a></b> 
     <%  }else if(num>guess) { %> 
        <h3>You Guessed Lower...Try Bigger Number</h3> 
     <%  }else{ %>  
        <h3>You Guessed Higher...Try Smaller Number</h3> 
     <%  } 
     } 
     if (flag) { c++; %>  
     <h3>I Guessed a Number between 1 to 100. Try To Guess..</h3> 
     <form name="guess" action="try.jsp?c=<%= c%>" method="post"> 
     <input type="text" value="<%=num %>" name="val" hidden> 
     Make Your Guess : <input type="text" name="guess" size=10 maxlength=3> 
     <input type="submit" value="GO"> 
     </form> 
     <% } %> 

</body> 
</html>