Java 如何以相反的顺序打印字符串数据?

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

您好,我正在尝试按反转顺序打印字符串,因为我正在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: 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's
inf
?和
ch中存在错误是非数字的。Infact
Conversion=String.valueOf(inf.stringToLong(ch));Date d=new Date(Long.valueOf(Conversion));
完全不是必需的。