直接上代码
import java.io.*;//考虑数据溢出的问题
//为什么输入0-65536,在56320以后,读取就会少了一位?
public class DoEncry { public static void main(String[] args) {
try {
BufferedReader br = new BufferedReader(new FileReader("D:/a.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("C:/a.txt"));
BufferedReader bread = new BufferedReader(new FileReader("C:/a.txt"));
int i = 0;
char c = ' ';
/*
* 此处是进行考虑的简单数据加减所产生的溢出问题
* 可以无视此段注释代码,如果可以也请帮忙给个解决思路
while ((i = br.read()) != -1) {
System.out.print(i);
i = i + 5;
bw.write(i);
bw.flush();
}
String s = null;
char[] sArr;
while ((s = br.readLine()) != null) {
sArr = s.toCharArray();
for (int j = 0; j < sArr.length; j ++) {
i = sArr[j] + 5;
sArr[j] = (char)i;
}
bw.write(sArr, 0, sArr.length);
bw.newLine();
bw.flush();
while ((s = bread.readLine()) != null) {
sArr = s.toCharArray();
for (int j = 0; j < sArr.length; j ++) {
i = sArr[j] - 5;
System.out.print((char)i);
}
System.out.println();
}
br.close();
bw.close();
*/
int Count = 0;
//如将 56320 改成 56321 - 65535 Count 和 count 就会相差1
for(; i < 56320; i ++) {
bw.write(i);
Count ++;
}
bw.flush();
bw.close();
int k = 0;
int count = 0;
while ((k = bread.read()) != -1) {
System.out.print(k + " ");
++count;
}
System.out.println("\n" + Count);
System.out.println("\n" + count);
BufferedReader bre = new BufferedReader(new InputStreamReader(System.in));
bre.read(); //任意输入后退出...
System.exit(0);
} catch (IOException e) {
e.printStackTrace();
System.exit(-1);
}
}} 如果只是我把一点细节写错了,希望大侠们指出。我和另一个同学看了挺久也没看出原因。在此提前谢过各位了。
import java.io.*;//考虑数据溢出的问题
//为什么输入0-65536,在56320以后,读取就会少了一位?
public class DoEncry { public static void main(String[] args) {
try {
BufferedReader br = new BufferedReader(new FileReader("D:/a.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("C:/a.txt"));
BufferedReader bread = new BufferedReader(new FileReader("C:/a.txt"));
int i = 0;
char c = ' ';
/*
* 此处是进行考虑的简单数据加减所产生的溢出问题
* 可以无视此段注释代码,如果可以也请帮忙给个解决思路
while ((i = br.read()) != -1) {
System.out.print(i);
i = i + 5;
bw.write(i);
bw.flush();
}
String s = null;
char[] sArr;
while ((s = br.readLine()) != null) {
sArr = s.toCharArray();
for (int j = 0; j < sArr.length; j ++) {
i = sArr[j] + 5;
sArr[j] = (char)i;
}
bw.write(sArr, 0, sArr.length);
bw.newLine();
bw.flush();
while ((s = bread.readLine()) != null) {
sArr = s.toCharArray();
for (int j = 0; j < sArr.length; j ++) {
i = sArr[j] - 5;
System.out.print((char)i);
}
System.out.println();
}
br.close();
bw.close();
*/
int Count = 0;
//如将 56320 改成 56321 - 65535 Count 和 count 就会相差1
for(; i < 56320; i ++) {
bw.write(i);
Count ++;
}
bw.flush();
bw.close();
int k = 0;
int count = 0;
while ((k = bread.read()) != -1) {
System.out.print(k + " ");
++count;
}
System.out.println("\n" + Count);
System.out.println("\n" + count);
BufferedReader bre = new BufferedReader(new InputStreamReader(System.in));
bre.read(); //任意输入后退出...
System.exit(0);
} catch (IOException e) {
e.printStackTrace();
System.exit(-1);
}
}} 如果只是我把一点细节写错了,希望大侠们指出。我和另一个同学看了挺久也没看出原因。在此提前谢过各位了。
bw.write(1);
bw.write(2);
bw.write(56319);
bw.write(56320);
bw.write(4);
bw.write(5);
如果这么去写的话将会输出
1 2 63 4 5 这里还有一个问题就是只有56319和56320连起来写才会出现这种情况
如果给56319后边跟一个其他的就能正常写入了,非常郁闷