import java.awt.*; import java.awt.event.*;
import java.io.*;
class Example20_5
{ public static void main(String args[])
{ char a[]="今天晚上十点发起总攻".toCharArray();
int n,m;
try{ File f=new File("D:\\program","secret.txt");
for(int i=0;i<a.length;i++)
{ a[i]=(char)(a[i]^'R');
}
FileWriter out=new FileWriter(f);
out.write(a,0,a.length);
out.close();
FileReader in=new FileReader(f);
int length=(int)f.length();
char tom[]=new char[length];
while((n=in.read(tom,0,tom.length))!=-1)
{ String s=new String(tom,0,n);
System.out.println("密文: "+s);
}
in.close();
m=n;
for(int i=0;i<m;i++)
{ tom[i]=(char)(tom[i]^'R');
}
String s1=new String(tom,0,m);
System.out.println("明文: "+s1);
}
catch(IOException e)
{ System.out.println("Error");
}
}
}
Exception in thread "main" java.lang.String Index OutOfBoundsException:String index out of range: -1
at java.lang.String<init><String.java:192>
at Example20_5.main<Example20_5.java:27>
明文的内容不能显示出来,初学者,大家帮我看看啊!
import java.io.*;
class Example20_5
{ public static void main(String args[])
{ char a[]="今天晚上十点发起总攻".toCharArray();
int n,m;
try{ File f=new File("D:\\program","secret.txt");
for(int i=0;i<a.length;i++)
{ a[i]=(char)(a[i]^'R');
}
FileWriter out=new FileWriter(f);
out.write(a,0,a.length);
out.close();
FileReader in=new FileReader(f);
int length=(int)f.length();
char tom[]=new char[length];
while((n=in.read(tom,0,tom.length))!=-1)
{ String s=new String(tom,0,n);
System.out.println("密文: "+s);
}
in.close();
m=n;
for(int i=0;i<m;i++)
{ tom[i]=(char)(tom[i]^'R');
}
String s1=new String(tom,0,m);
System.out.println("明文: "+s1);
}
catch(IOException e)
{ System.out.println("Error");
}
}
}
Exception in thread "main" java.lang.String Index OutOfBoundsException:String index out of range: -1
at java.lang.String<init><String.java:192>
at Example20_5.main<Example20_5.java:27>
明文的内容不能显示出来,初学者,大家帮我看看啊!
解决方案 »
- 关于多线程的一个问题
- java swt窗体问题
- 多线程问题
- 要求,两个Date类型的的变量,如果它们的年月日想等,就算是想等,忽略时间,怎么半?转变成字符处吗?
- 基于java socket编程 的ftp中如何实现整个文件夹的上传和下载?
- 不可思议的结果。。。谁能帮忙解释下。。。
- 如何将JdbNavToolBar中的缺省图标改为自定义的图标
- 数值格式问题
- 想做一个资源管理器那样的界面,希望给点思路
- Connection reset by peer: JVM_recv in socket input stream read这个问题到底怎么解决??
- socket客户端如何改写成为多线程的? 请大侠帮忙看看
- 如何用正则表达式匹配<a 与</a>以及其中间的字符
for(int i=0;i<m;i++)
{ tom[i]=(char)(tom[i]^'R');
}这里 m变成-1了
改成
String s1=new String(tom,0,m-1);
* Main.java
*
* Created on 2006年7月25日, 下午1:13
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/package test;import java.awt.*;
import java.awt.event.*;
import java.io.*;class Example20_5 {
public static void main(String args[]) {
char a[]="今天晚上十点发起总攻".toCharArray();
int n,m;
try{
File f=new File("d:/secret.txt");
for(int i=0;i<a.length;i++) {
a[i]=(char)(a[i]^'R');
}
FileWriter out=new FileWriter(f);
out.write(a,0,a.length);
out.close();
FileReader in=new FileReader(f);
int length=(int)f.length();
char tom[]=new char[length/2];
while((n=in.read(tom,0,tom.length))!=-1) {
String s=new String(tom,0,n);
System.out.println("密文: "+s);
}
in.close();
m=tom.length;
for(int i=0;i<m;i++) {
tom[i]=(char)(tom[i]^'R');
}
String s1=new String(tom,0,m);
System.out.println("明文: "+s1);
} catch(IOException e) {
System.out.println("Error");
}
}
}
还有
tom[i]=(char)(tom[i]^'R');又是什么意思呀,
学习学习,希望各位前辈讲解讲解!!!
C^B=>A
这句太轻率了吧
如果改成“1分30秒后向a平台发起总攻”
肯定会出错的
m = s.toCharArray().length;
* Main.java
*
* Created on 2006年7月25日, 下午1:13
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/package test;import java.awt.*;
import java.awt.event.*;
import java.io.*;class Example20_5 {
public static void main(String args[]) {
char a[]="1分30秒后向a平台发起总攻".toCharArray();
int n,m;
try{
File f=new File("d:/secret.txt");
for(int i=0;i<a.length;i++) {
a[i]=(char)(a[i]^'R');
}
FileWriter out=new FileWriter(f);
out.write(a,0,a.length);
out.close();
FileReader in=new FileReader(f);
int length=(int)f.length();
char tom[]=new char[length];
n=in.read(tom,0,tom.length);
String s=new String(tom,0,n);
System.out.println("密文: "+s);
in.close();
for(int i=0;i<n;i++) {
tom[i]=(char)(tom[i]^'R');
}
String s1=new String(tom,0,n);
System.out.println("明文: "+s1);
} catch(IOException e) {
System.out.println("Error");
}
}
}
这样行吗?
如果不减10,明文会多出10个R出来。