Java 如何以相反的顺序打印字符串数据?
您好,我正在尝试按反转顺序打印字符串,因为我正在jsp页面上对其进行编码,日志文件如下所示Java 如何以相反的顺序打印字符串数据?,java,Java,您好,我正在尝试按反转顺序打印字符串,因为我正在jsp页面上对其进行编码,日志文件如下所示 [1322110800] LOG ROTATION: DAILY [1322110800] LOG VERSION: 2.0 [1322110800] CURRENT HOST STATE:arsalan.hussain;DOWN;HARD;1;CRITICAL - Host Unreachable (192.168.1.107) [1322110800] CURRENT HOST STATE: loca
[1322110800] LOG ROTATION: DAILY
[1322110800] LOG VERSION: 2.0
[1322110800] CURRENT HOST STATE:arsalan.hussain;DOWN;HARD;1;CRITICAL - Host Unreachable (192.168.1.107)
[1322110800] CURRENT HOST STATE: localhost;UP;HARD;1;PING OK - Packet loss = 0%, RTA = 0.06 ms
[1322110800] CURRENT HOST STATE: musewerx-72c7b0;UP;HARD;1;PING OK - Packet loss = 0%, RTA = 0.27 ms
代码是
List<String> data = new LinkedList<String>();
String strpath="/var/nagios.log";
FileReader fr = new FileReader(strpath);
BufferedReader br = new BufferedReader(fr);
String ch;
int time=0;
String Conversion="";
do {
ch = br.readLine();
Conversion=String.valueOf(inf.stringToLong(ch));
Date d = new Date(Long.valueOf(Conversion));
Pattern pt = Pattern.compile("\\[(\\d+)\\]");
Matcher m = pt.matcher(ch);
if (m.find()) {
Date dt = new Date(Long.parseLong(m.group(1)) * 1000);
SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy HH:mm:ss");
ch = m.replaceFirst('['+ sdf.format(dt) +']');
}
out.print(ch+"<br/>");
} while (ch != null);
fr.close();
List data=newlinkedlist();
字符串strpath=“/var/nagios.log”;
FileReader fr=新的FileReader(strpath);
BufferedReader br=新的BufferedReader(fr);
弦ch;
整数时间=0;
字符串转换=”;
做{
ch=br.readLine();
Conversion=String.valueOf(inf.stringToLong(ch));
日期d=新日期(长值(转换));
Pattern pt=Pattern.compile(\\[(\\d+\\\]);
匹配器m=点匹配器(ch);
if(m.find()){
日期dt=新日期(Long.parseLong(m.group(1))*1000);
SimpleDataFormat sdf=新的SimpleDataFormat(“MM dd yyyy HH:MM:ss”);
ch=m.replaceFirst('['+sdf.format(dt)+']');
}
打印输出(ch+“
”);
}while(ch!=null);
fr.close();
然后我试着在我的代码中添加这个
String[] arr=ch.split("\\[");
time=arr.length;
for(int num=time;num>=0;num--)
{
out.print(arr[num]+"<br/>");
}
String[]arr=ch.split(“\\[”);
时间=到达长度;
对于(int num=time;num>=0;num--)
{
输出。打印(arr[num]+“
”;
}
现在上面的代码看起来像是添加了这个代码之后
List<String> data = new LinkedList<String>();
String strpath="/var/nagios.log";
FileReader fr = new FileReader(strpath);
BufferedReader br = new BufferedReader(fr);
String ch;
int time=0;
String Conversion="";
do {
ch = br.readLine();
Conversion=String.valueOf(inf.stringToLong(ch));
Date d = new Date(Long.valueOf(Conversion));
Pattern pt = Pattern.compile("\\[(\\d+)\\]");
Matcher m = pt.matcher(ch);
if (m.find()) {
Date dt = new Date(Long.parseLong(m.group(1)) * 1000);
SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy HH:mm:ss");
ch = m.replaceFirst('['+ sdf.format(dt) +']');
}
String[] arr=ch.split("\\[");
time=arr.length;
for(int num=time;num>=0;num--)
{
out.print(arr[num]+"<br/>");
}
//out.print(ch+"<br/>");
} while (ch != null);
fr.close();
List data=newlinkedlist();
字符串strpath=“/var/nagios.log”;
FileReader fr=新的FileReader(strpath);
BufferedReader br=新的BufferedReader(fr);
弦ch;
整数时间=0;
字符串转换=”;
做{
ch=br.readLine();
Conversion=String.valueOf(inf.stringToLong(ch));
日期d=新日期(长值(转换));
Pattern pt=Pattern.compile(\\[(\\d+\\\]);
匹配器m=点匹配器(ch);
if(m.find()){
日期dt=新日期(Long.parseLong(m.group(1))*1000);
SimpleDataFormat sdf=新的SimpleDataFormat(“MM dd yyyy HH:MM:ss”);
ch=m.replaceFirst('['+sdf.format(dt)+']');
}
字符串[]arr=ch.split(“\\[”);
时间=到达长度;
对于(int num=time;num>=0;num--)
{
输出。打印(arr[num]+“
”;
}
//打印输出(ch+“
”);
}while(ch!=null);
fr.close();
但结果是JSP中出现异常
希望你回复
致以最诚挚的问候time=arr.length;
time=arr.length;
for(int num=time;num>0;num--)
{
out.print(arr[num-1]+"<br/>");
}
对于(int num=time;num>0;num--)
{
打印输出(arr[num-1]+“
”;
}
什么异常?猜测“数组超出范围”老兄,这段代码很难读。不,它只是给出了JSP错误的例外。可能重复:请不要告诉我们你的生活故事。只显示示例输入和所需输出…我们将完成其余的工作。我怀疑这是一个单行解决方案,但我不知道你到底想要什么。它是按字符串打印的,而不是按相反顺序打印的。我还使用out.打印(arr[time-1]+“”);但是结果是一样的??什么?你还是有错误吗?你想做什么,真的吗?你可以试着打印
时间
我确信你的数组有大小=1
,因此反向和正向是一样的。你的拆分实际上没有拆分。现在我把这个代码放在while条件之后的右边,但它在这里给出了例外“Conversion=String.valueOf(inf.stringToLong(ch));"行??我想完全按照上面提到的顺序打印日志文件,但顺序相反。在do while循环之后,我得到了包含数据的ch字符串,我可以打印它,但我想以相反的顺序打印ch字符串数据,所以我尝试拆分,然后打印此代码,但我告诉您,在刚刚上面的postwhat'sinf
?和ch中存在错误代码>是非数字的。InfactConversion=String.valueOf(inf.stringToLong(ch));Date d=new Date(Long.valueOf(Conversion));
完全不是必需的。