如何在JSP中使用具有某些用户定义函数的类

时间:2015-02-14 14:55:30

标签: java jsp

我在java中创建了一个可以计算单词中整数输入的程序,例如 123 = One Twendred Twenty Three ,它运行正常。但是当我尝试在JSP中使用它时,它向我显示了一些错误!

我是JSP的新手,请帮帮我。

我的完整代码如下。

    <%@page contentType="text/html" pageEncoding="UTF-8"%>

    <!DOCTYPE html>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>Show Output</title>
        </head>
        <body>


        <p>The number you entered is<br>

            <%! 
            public class NumberToWord {

        int a, b;
        String output;

        String[] zeroToNineteen = new String[]{"Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Tleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"};

        String[] twentyToNinetynine = new String[]{null, null, "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety"};
        String h="100";

        public String numberToWord(String get) {
            get=h;
            int number = Integer.parseInt(get);


            if (number >= 0 && number < 20) {

                output = oneToNineteen(number);

            } else if (number >= 20 && number < 100) {

                output = bellowHundred(number);

            } else if (number >= 100 && number < 1000) {

                output = bellowThousand(number);

            } else if (number >= 1000 && number < 100000) {

                output = thousands(number);

            } else if (number >= 100000 && number < 10000000) {

                output = lacs(number);

            } else if (number >= 10000000) {

                output = crore(number);

            }
            return output;
        }

        public String oneToNineteen(int b) {

            output = zeroToNineteen[b];
            return output;
        }

        public String bellowHundred(int number) {
            if (number >= 0 && number < 20) {
                if (number == 0) {
                    output = "";
                } else {
                    output = oneToNineteen(number);
                }

            } else if (number >= 20 && number < 100) {
                a = number / 10;
                b = number % 10;
                if (b == 0) {
                    output = twentyToNinetynine[a];
                } else {
                    output = twentyToNinetynine[a] + oneToNineteen(b);
                }
            }
            return output;
        }

        public String bellowThousand(int number) {
            a = number / 100;
            if (a == 0) {
                output = "";
            } else {
                output = zeroToNineteen[a] + " Hundred ";
            }

            b = number % 100;
            output = output + bellowHundred(b);
            return output;
        }

        public String thousands(int number) {
            a = number / 1000;
            if (a >= 0 && a < 20) {
                if (a == 0) {
                    output = "";
                } else {
                    output = zeroToNineteen[a] + " Thousand ";
                }
            } else {
                output = bellowHundred(a) + " Thousand ";
            }

            b = number % 1000;
            output = output + bellowThousand(b);

            return output;
        }

        public String lacs(int number) {
            a = number / 100000;
            if (a >= 0 && a < 20) {
                if (a == 0) {
                    output = "";
                } else {
                    output = zeroToNineteen[a] + " Lac ";
                }
            } else {
                output = bellowHundred(a) + " Lac ";
            }

            b = number % 100000;
            if (b == 0) {
                output = output + "";
            } else {
                output = output + thousands(b);
            }

            return output;
        }

        public String crore(int number) {
            a = number / 10000000;
            if (a >= 0 && a < 20) {
                if (a == 0) {
                    output = "";
                } else {
                    output = zeroToNineteen[a] + " Crore ";
                }
            } else if (a >= 20 && a < 100) {
                output = bellowHundred(a) + " Crore ";
            } else {
                output = bellowThousand(a) + " Crore ";
            }

            b = number % 10000000;
            if (b == 0) {
                output = output + "";
            } else {
                output = output + lacs(b);
            }

            return output;
        }
    }
            %>
<% 
NumberToWord display=new NumberToWord();
String show=display.output;
out.write("You have entered "+show);
%>
        </p>
        </body>
    </html>

请建议我,我怎样才能使这段代码有效!

提前致谢:)

1 个答案:

答案 0 :(得分:0)

将类移到自己的文件中。那是不需要的, 但是为了重用,并将视图和逻辑分开。

package abc.def;

public class NumberToWord {

然后导入类

<%@page contentType="text/html" pageEncoding="UTF-8"
   import="abc.def.NumberToWord"
%>

<%
    NumberToWord ntw = new NumberToWord();
    ...

对于多个导入,导入值可能包含空格分隔的包(甚至是换行符),或者更好有几个import=...语句。

如果您仍想要定义本地类,<%!确实会引入声明。可能应该在这里使类静态,因为它不使用周围的JSP servlet类的成员。

在函数开头声明String output

相关问题