我在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>
请建议我,我怎样才能使这段代码有效!
提前致谢:)
答案 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
。