当前位置: 代码迷 >> J2SE >> java核心技术 高级特性第八版 27页的有关问题
  详细解决方案

java核心技术 高级特性第八版 27页的有关问题

热度:84   发布时间:2016-04-24 01:19:25.0
java核心技术 高级特性第八版 27页的问题
java核心技术 高级特性第八版 27页的问题

为什么27页class DataIO 类里的readFixedString方法的if(ch==0)错误?
我的代码是
Java code
//这样有错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();    }}



------解决方案--------------------
Java code
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();    }}
------解决方案--------------------
改成0的Assic 码,试试
  相关解决方案