请问,java中,将下面的英文名字变为中文 该怎样输出?
如题,下面是代码——————————————————————————————importjava.io.*;publicclassRandomFileDemo{publi...
如题,下面是代码
——————————————————————————————
import java.io.*;
public class RandomFileDemo {
public static void main(String[] args) throws Exception {
Employee e1=new Employee("zhangsan",23);
Employee e2=new Employee("lisi",24);
Employee e3=new Employee("wangwu",25);
RandomAccessFile ra=new RandomAccessFile("d:\\baron\\java\\employee.txt","rw");
ra.write(e1.name.getBytes());
ra.writeInt(e1.age);
ra.write(e2.name.getBytes());
ra.writeInt(e2.age);
ra.write(e3.name.getBytes());
ra.writeInt(e3.age);
ra.close();
RandomAccessFile raf=new RandomAccessFile("d:\\baron\\java\\employee.txt","r");
raf.skipBytes(12);
String str="";
int len=8;
for(int i=0;i<len;i++)
str=str+(char)raf.readByte();
System.out.println("第二位员工信息");
System.out.println("name="+str+",age="+raf.readInt());
raf.seek(0);
str="";
for(int i=0;i<len;i++)
str=str+(char)raf.readByte();
System.out.println("第一位员工信息");
System.out.println("name="+str+",age="+raf.readInt());
raf.skipBytes(12);
str="";
for(int i=0;i<len;i++)
str=str+(char)raf.readByte();
System.out.println("第三位员工信息");
System.out.println("name="+str.trim()+",age="+raf.readInt());
raf.close();
}
}
class Employee {
String name;
int age;
final static int LEN=8;
public Employee(String name,int age) {
if(name.length()>LEN)
name=name.substring(0,8);
else {
while(name.length()<LEN)
name=name+"\u0000";
}
this.name=name;
this.age=age;
}
}
————————————————————————————————
在不改变太多的情况下,我想将name中的 zhansan /lisi/wangwu 改为中文的 张三、李四、王五 应该怎么写代码呀?谢谢各位了 展开
——————————————————————————————
import java.io.*;
public class RandomFileDemo {
public static void main(String[] args) throws Exception {
Employee e1=new Employee("zhangsan",23);
Employee e2=new Employee("lisi",24);
Employee e3=new Employee("wangwu",25);
RandomAccessFile ra=new RandomAccessFile("d:\\baron\\java\\employee.txt","rw");
ra.write(e1.name.getBytes());
ra.writeInt(e1.age);
ra.write(e2.name.getBytes());
ra.writeInt(e2.age);
ra.write(e3.name.getBytes());
ra.writeInt(e3.age);
ra.close();
RandomAccessFile raf=new RandomAccessFile("d:\\baron\\java\\employee.txt","r");
raf.skipBytes(12);
String str="";
int len=8;
for(int i=0;i<len;i++)
str=str+(char)raf.readByte();
System.out.println("第二位员工信息");
System.out.println("name="+str+",age="+raf.readInt());
raf.seek(0);
str="";
for(int i=0;i<len;i++)
str=str+(char)raf.readByte();
System.out.println("第一位员工信息");
System.out.println("name="+str+",age="+raf.readInt());
raf.skipBytes(12);
str="";
for(int i=0;i<len;i++)
str=str+(char)raf.readByte();
System.out.println("第三位员工信息");
System.out.println("name="+str.trim()+",age="+raf.readInt());
raf.close();
}
}
class Employee {
String name;
int age;
final static int LEN=8;
public Employee(String name,int age) {
if(name.length()>LEN)
name=name.substring(0,8);
else {
while(name.length()<LEN)
name=name+"\u0000";
}
this.name=name;
this.age=age;
}
}
————————————————————————————————
在不改变太多的情况下,我想将name中的 zhansan /lisi/wangwu 改为中文的 张三、李四、王五 应该怎么写代码呀?谢谢各位了 展开
5个回答
展开全部
直接给你贴代码
package test;
import java.io.*;
public class RandomFileDemo {
public static void main(String[] args) throws Exception {
Employee e1=new Employee("张三",23);
Employee e2=new Employee("李四",24);
Employee e3=new Employee("王五",25);
RandomAccessFile ra=new RandomAccessFile("d:\\employee.txt","rw");
ra.writeChars(e1.name);
ra.writeInt(e1.age);
ra.writeChars(e2.name);
ra.writeInt(e2.age);
ra.writeChars(e3.name);
ra.writeInt(e3.age);
ra.close();
RandomAccessFile raf=new RandomAccessFile("d:\\employee.txt","r");
raf.skipBytes(Employee.LEN*2+4);
String str="";
int len=Employee.LEN;
for(int i=0;i<len;i++)
str=str+raf.readChar();
System.out.println("第二位员工信息");
System.out.println("name="+str.trim()+",age="+raf.readInt());
raf.seek(0);
str="";
for(int i=0;i<len;i++)
str=str+raf.readChar();
System.out.println("第一位员工信息");
System.out.println("name="+str.trim()+",age="+raf.readInt());
str="";
raf.skipBytes(Employee.LEN*2+4);
for(int i=0;i<len;i++)
str=str+raf.readChar();
System.out.println("第三位员工信息");
System.out.println("name="+str.trim()+",age="+raf.readInt());
raf.close();
}
}
class Employee {
String name;
int age;
final static int LEN=8;
public Employee(String name,int age) {
if(name.length()>LEN)
name=name.substring(0,8);
else {
while(name.length()<LEN)
name=name+"\u0000";
}
this.name=name;
this.age=age;
}
}
你上面的用getBytes写入的话,是读不出中文的,因为在java 中不管是中文字符还是英文字符 它们都是一个字符 都占用两个字节 在本地的计算机编码系统中英文字符占用一个字节 而中文字符占用两个字节.
想输出出中文的话,就可以存储的时候用writeChars,读出的时候用readChar,
注意在TXT中,这样存是看不到任何数据的,只是一些乱码。读出的时候才能看到正确数据
package test;
import java.io.*;
public class RandomFileDemo {
public static void main(String[] args) throws Exception {
Employee e1=new Employee("张三",23);
Employee e2=new Employee("李四",24);
Employee e3=new Employee("王五",25);
RandomAccessFile ra=new RandomAccessFile("d:\\employee.txt","rw");
ra.writeChars(e1.name);
ra.writeInt(e1.age);
ra.writeChars(e2.name);
ra.writeInt(e2.age);
ra.writeChars(e3.name);
ra.writeInt(e3.age);
ra.close();
RandomAccessFile raf=new RandomAccessFile("d:\\employee.txt","r");
raf.skipBytes(Employee.LEN*2+4);
String str="";
int len=Employee.LEN;
for(int i=0;i<len;i++)
str=str+raf.readChar();
System.out.println("第二位员工信息");
System.out.println("name="+str.trim()+",age="+raf.readInt());
raf.seek(0);
str="";
for(int i=0;i<len;i++)
str=str+raf.readChar();
System.out.println("第一位员工信息");
System.out.println("name="+str.trim()+",age="+raf.readInt());
str="";
raf.skipBytes(Employee.LEN*2+4);
for(int i=0;i<len;i++)
str=str+raf.readChar();
System.out.println("第三位员工信息");
System.out.println("name="+str.trim()+",age="+raf.readInt());
raf.close();
}
}
class Employee {
String name;
int age;
final static int LEN=8;
public Employee(String name,int age) {
if(name.length()>LEN)
name=name.substring(0,8);
else {
while(name.length()<LEN)
name=name+"\u0000";
}
this.name=name;
this.age=age;
}
}
你上面的用getBytes写入的话,是读不出中文的,因为在java 中不管是中文字符还是英文字符 它们都是一个字符 都占用两个字节 在本地的计算机编码系统中英文字符占用一个字节 而中文字符占用两个字节.
想输出出中文的话,就可以存储的时候用writeChars,读出的时候用readChar,
注意在TXT中,这样存是看不到任何数据的,只是一些乱码。读出的时候才能看到正确数据
追问
在 if(name.length()>LEN) 中 name.length()输出的长度是以字符为单位的啊? 难道不是字节为单位吗?
展开全部
直接把zhangsan 改成张三
lisi--->李四
wangwu----->王五
lisi--->李四
wangwu----->王五
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Employee e1=new Employee("张三",23);
Employee e2=new Employee("李四",24);
Employee e3=new Employee("王五",25);
Employee e2=new Employee("李四",24);
Employee e3=new Employee("王五",25);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用汉字输入你要的名字就行了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
写自己要写的名字。。。。。。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询