java核心技术 高级特性第八版 27页的问题为什么27页class DataIO 类里的readFixedString方法的if(ch==0)错误?
我的代码是//这样有错
class DataIO{
public static void writeFixedString(String name,int size,DataOutputStream out)
throws IOException{
int i=0;
char ch;
while(i<size){
ch=0;
if(i<name.length()){
ch=name.charAt(i);
}
out.writeChar(ch);
i++;
}
}
public static String readFixedString(int size,RandomAccessFile in)
throws IOException{
int i=0;
char ch;
StringBuilder str=new StringBuilder();
while(i<size){
ch=in.readChar();
if(ch==0)
break;
i++;
str.append(ch);
}
in.skipBytes(2*(size-i));
return str.toString();
}
}
/*改成这样问题是
if(ch=='0')
break;
从文本中读取'0'字符赋予ch,可ch不会等于'0'了,ch=='0'永远为假,这是为什么?
*/
class DataIO{
public static void writeFixedString(String name,int size,DataOutputStream out)
throws IOException{
int i=0;
char ch;
while(i<size){
ch=0;
if(i<name.length()){
ch=name.charAt(i);
}
out.writeChar(ch);
i++;
}
}
public static String readFixedString(int size,RandomAccessFile in)
throws IOException{
int i=0;
char ch;
StringBuilder str=new StringBuilder();
while(i<size){
ch=in.readChar();
if(ch=='0')
break;
i++;
str.append(ch);
}
in.skipBytes(2*(size-i));
return str.toString();
}
}//换成这样也不对,到底是为什么,好纠结
class DataIO{
public static void writeFixedString(String name,int size,DataOutputStream out)
throws IOException{
int i=0;
char ch;
while(i<size){
ch=' ';
if(i<name.length()){
ch=name.charAt(i);
}
out.writeChar(ch);
i++;
}
}
public static String readFixedString(int size,RandomAccessFile in)
throws IOException{
int i=0;
char ch;
StringBuilder str=new StringBuilder();
while(i<size){
ch=in.readChar();
if(ch==' ')
break;
i++;
str.append(ch);
}
in.skipBytes(2*(size-i));
return str.toString();
}
}
我的代码是//这样有错
class DataIO{
public static void writeFixedString(String name,int size,DataOutputStream out)
throws IOException{
int i=0;
char ch;
while(i<size){
ch=0;
if(i<name.length()){
ch=name.charAt(i);
}
out.writeChar(ch);
i++;
}
}
public static String readFixedString(int size,RandomAccessFile in)
throws IOException{
int i=0;
char ch;
StringBuilder str=new StringBuilder();
while(i<size){
ch=in.readChar();
if(ch==0)
break;
i++;
str.append(ch);
}
in.skipBytes(2*(size-i));
return str.toString();
}
}
/*改成这样问题是
if(ch=='0')
break;
从文本中读取'0'字符赋予ch,可ch不会等于'0'了,ch=='0'永远为假,这是为什么?
*/
class DataIO{
public static void writeFixedString(String name,int size,DataOutputStream out)
throws IOException{
int i=0;
char ch;
while(i<size){
ch=0;
if(i<name.length()){
ch=name.charAt(i);
}
out.writeChar(ch);
i++;
}
}
public static String readFixedString(int size,RandomAccessFile in)
throws IOException{
int i=0;
char ch;
StringBuilder str=new StringBuilder();
while(i<size){
ch=in.readChar();
if(ch=='0')
break;
i++;
str.append(ch);
}
in.skipBytes(2*(size-i));
return str.toString();
}
}//换成这样也不对,到底是为什么,好纠结
class DataIO{
public static void writeFixedString(String name,int size,DataOutputStream out)
throws IOException{
int i=0;
char ch;
while(i<size){
ch=' ';
if(i<name.length()){
ch=name.charAt(i);
}
out.writeChar(ch);
i++;
}
}
public static String readFixedString(int size,RandomAccessFile in)
throws IOException{
int i=0;
char ch;
StringBuilder str=new StringBuilder();
while(i<size){
ch=in.readChar();
if(ch==' ')
break;
i++;
str.append(ch);
}
in.skipBytes(2*(size-i));
return str.toString();
}
}
public static void writeFixedString(String name,int size,DataOutputStream out)
throws IOException{
int i=0;
char ch;
while(i<size){
ch=0;
if(i<name.length()){
ch=name.charAt(i);
}
out.writeChar(ch);
i++;
}
}
public static String readFixedString(int size,RandomAccessFile in)
throws IOException{
int i=0;
char ch;
StringBuilder str=new StringBuilder();
while(i<size){
ch=in.readChar();
if(ch==0)
break;
i++;
str.append(ch);
}
in.skipBytes(2*(size-i));
return str.toString();
}
}这个是没有问题的哦~~在Java中 char类型在处理的时候最终还是转为int处理的