标题:被注释掉的代码为什么不能改变 salary
只看楼主
cl8972
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2014-12-8
结帖率:0
已结贴  问题点数:10 回复次数:5 
被注释掉的代码为什么不能改变 salary
import *;
import java.util.*;
public class ObjectStreamTest2 {
    public static void main(String[] args) {
        Employee[] staff = new Employee[3];
        staff[0] = new Employee("马云",12345);
        staff[1] = new Employee("马化腾",1000000000);
        staff[2] = new Employee("李彦宏",1000000000);
        int i;//变量在用之前必须要用付处置,在此没有付初值,在for()循环时付了初值
        float bySalary;
        try {
            ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream("./staff.dat"));
            os.writeObject(staff);
            os.close();

            System.out.println("before change:");
            for(i=0;i<staff.length;i++) {
                staff[i].print();//直接把对象输出是错误的,要通过调用print()
            }

            ObjectInputStream in = new ObjectInputStream(new FileInputStream("./staff.dat"));
            Employee[] newStaff = (Employee[])in.readObject();
            in.close();

            /*System.out.println("please enter bySalary: ");
            DataInputStream ds = new DataInputStream(System.in);
            bySalary = ds.readFloat();
            System.in.skip(2);*/

            for(i=0;i<newStaff.length;i++) {
                newStaff[i].raiseSalary(100);
            }

            System.out.println("after change:");

            for(i=0;i<newStaff.length;i++) {
                newStaff[i].print();
            }


        } catch(Exception e) {
            e.toString();
            System.exit(-1);
        }
    }

    static class Employee implements Serializable {
                String name;
                int salary;

                public Employee(String name,int salary) {
                    this.name = name;
                    this.salary = salary;
                }

                public float raiseSalary(float bySalary) {
                    salary *= (1 + bySalary/100);
                    return salary;
                }

                public void print() {
                    System.out.println(name + ' ' + salary);

                }

            }



}
搜索更多相关主题的帖子: 李彦宏 马化腾 public import 
2014-12-08 16:10
hhwz
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:87
帖 子:687
专家分:4502
注 册:2011-5-22
得分:5 
注释掉了 你还要改什么
2014-12-08 22:28
liao06550107
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:111
专家分:696
注 册:2011-10-2
得分:5 
DataInputStream对象readFloat()方法读取的是四个字节并解释为浮点数,而控制台输入的为浮点数为字符,经过平台默认编码表转化为字节,当被readFloat()方法读取时,由于用了不同的编码和解码方式,所以读取不到正确值。
可以用DataOutputStream对象writeFloat()方法写入文件中,再读取。
收到的鲜花
  • cl89722014-12-09 19:54 送鲜花  2朵   附言:我明白了问题所在

听不同的音乐,看不同的书,游历不同的城市,邂逅不同的人,走的多了,站的高了,自然就看的远了。
2014-12-09 01:40
cl8972
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2014-12-8
得分:0 
回复 3楼 liao06550107
谢谢
2014-12-09 16:34
cl8972
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2014-12-8
得分:0 
回复 3楼 liao06550107
我想动态的输入数据,改变salary变化率,还是试不出来
求指教!

[ 本帖最后由 cl8972 于 2014-12-9 19:53 编辑 ]
2014-12-09 17:06
liao06550107
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:111
专家分:696
注 册:2011-10-2
得分:0 
Scanner scanner = new Scanner(System.in);
float a=scanner.nextFloat();

听不同的音乐,看不同的书,游历不同的城市,邂逅不同的人,走的多了,站的高了,自然就看的远了。
2014-12-09 23:31



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-439722-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020812 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved