Java 文本文件中的数字不是仅打印[]
在下面的代码中,我以jsp形式输入的问题和答案都输入到文本文件中。但它前面的数字必须打印出来Java 文本文件中的数字不是仅打印[],java,Java,在下面的代码中,我以jsp形式输入的问题和答案都输入到文本文件中。但它前面的数字必须打印出来 <%@ page language="java" import="java.io.*" errorPage="" %> <% /* String num=request.getParameter("qnum"); session.setAttribute("quesnum",num);*/ String q=request.getParameter
<%@ page language="java" import="java.io.*" errorPage="" %>
<%
/* String num=request.getParameter("qnum");
session.setAttribute("quesnum",num);*/
String q=request.getParameter("qn");
session.setAttribute("question",q);
String opt1=request.getParameter("A");
session.setAttribute("a",opt1);
String opt2=request.getParameter("B");
session.setAttribute("b",opt2);
String opt3=request.getParameter("C");
session.setAttribute("c",opt3);
String opt4=request.getParameter("D");
session.setAttribute("d",opt4);
String ans=request.getParameter("ANS");
session.setAttribute("answer",ans);
%>
<html>
<head>
<title>Text File</title>
</head>
<body>
<%
File f=new File("D:\\Program Files\\Tomcat 6.0\\webapps\\ROOT\\tst.txt");
f.createNewFile();
try
{
BufferedWriter bw=new BufferedWriter(new FileWriter(f,true));
int num=1;
bw.newLine();
while(num<100)
{
bw.write((char)num);
bw.write("|");
bw.write(q);
bw.write("|");
bw.write(opt1);
bw.write("|");
bw.write(opt2);
bw.write("|");
bw.write(opt3);
bw.write("|");
bw.write(opt4);
bw.write("|");
bw.write(ans);
bw.flush();
bw.close();
}
num++;
}
catch(Exception e)
{
}
%>
</body>
</html>
Output must be
1|quest1|option a |option b|option c|option d| and:a
2|quest2|option a |option b|option c|option d| and:b
3|quest3|option a |option b|option c|option d| and:d
but instead of 1 2 3 i get
[]|quest1|option a |option b|option c|option d| and:a
文本文件
您正在将int
数字从1到100转换为char
作为字节值。这可能不是您想要的,因为假设使用西方语言,这从一开始就相当于ASCII表。前32个左右的字符是不可打印的内容,如换行符、蜂鸣音等,显然不会进入输出
所以不是
bw.write((char)i);
您需要将int转换为字符串,例如。G像这样:
bw.write(String.valueOf(i));
您正在将int
数字从1到100转换为char
作为字节值。这可能不是您想要的,因为假设使用西方语言,这从一开始就相当于ASCII表。前32个左右的字符是不可打印的内容,如换行符、蜂鸣音等,显然不会进入输出
所以不是
bw.write((char)i);
您需要将int转换为字符串,例如。G像这样:
bw.write(String.valueOf(i));
这里
您正在将数字(例如1)转换为字符,但希望将数字打印为字符串:
bw.write(String.valueOf(num));
这是一个简单的解决方案
bw.write(String.format("%d", i));
稍微好一点,因为它允许对数字进行格式化(对齐、前导零等)
您正在将数字(例如1)转换为字符,但希望将数字打印为字符串:
bw.write(String.valueOf(num));
这是一个简单的解决方案
bw.write(String.format("%d", i));
稍微好一点,因为它允许设置数字格式(对齐、前导零等)谢谢,它工作正常,但下次我输入第二个问题时,它仍然显示1!!!!!这是因为您通过将num设置为1开始计算每个传入请求。您需要保留一个跨越请求的计数器。如果每个会话都要保留这个数字,您可以将它存储在那里,并为每个请求增加它。@Sumithra-当然,您还希望得到什么-您每次都将num
设置为1。如果要递增数字,则必须首先从文件中读取上次使用的数字,递增并将其用作num
的值。(并删除“while”循环,它已经过时)非常感谢。我理解它背后的逻辑。谢谢你,它工作得很好,但下次当我输入第二个问题时,它仍然显示1!!!!!这是因为您通过将num设置为1开始计算每个传入请求。您需要保留一个跨越请求的计数器。如果每个会话都要保留这个数字,您可以将它存储在那里,并为每个请求增加它。@Sumithra-当然,您还希望得到什么-您每次都将num
设置为1。如果要递增数字,则必须首先从文件中读取上次使用的数字,递增并将其用作num
的值。(并删除“while”循环,它已经过时)非常感谢。我明白背后的逻辑。