24小时热门版块排行榜    

CyRhmU.jpeg
南方科技大学公共卫生及应急管理学院2025级博士研究生招生报考通知
查看: 767  |  回复: 1

water11

金虫 (正式写手)

[求助] Java程序没有错误,但不显示结果,求指点。已有1人参与

java程序运行(环境Eclipse)时没有提示错误, 但是不显示结果,不明所以,请大家帮帮忙,非常感谢。

Person.java代码如下:
public class Person {
        private boolean IsConsuming;
        private boolean IsConcerned;
        private int LastTimeChangeConcernedFromConsumingToNonConsuming;
        private ContinuousSpace <Object> mySpace; // handle for the space
       
        public Person(ContinuousSpace <Object> space, boolean consuming, boolean concerned){
                IsConsuming=consuming;
                IsConcerned=concerned;
                mySpace = space;
                LastTimeChangeConcernedFromConsumingToNonConsuming = 0;
        }       
        @ScheduledMethod (start=1, interval=1 )
        public void step () {
                LastTimeChangeConcernedFromConsumingToNonConsuming++;
        }       
        private void NonConcernedChangeFromConsumingToNonConsuming () {
                if (IsConcerned == false) {
                        double rnd = RandomHelper.nextDouble();
                        if (rnd < 0.1) {
                                IsConsuming = !IsConsuming;
                        }
                }               
        }
        private void ConsumingChangeFromNonConcernedToConcerned () {
                if (IsConcerned == false) {
                        Context <Object> context = ContextUtils.getContext(this);
                        Network <Object> net = (Network<Object> context.getProjection ("communication";
                               
                        Iterable<Object> neighbours = net.getAdjacent(this);
                        for (Object obj : neighbours) {
                                boolean neighbourConcernStatus = ((Person) obj).GetConcernStatus();
                                if (neighbourConcernStatus == true)  {
                                        IsConcerned = true;       
                                }
                        }
                }
        }
        private void ConcernedChangeFromConsumingToConsuming () {
                if ((IsConcerned == true) && (IsConsuming == true)) {
                        Context <Object> context = ContextUtils.getContext(this);
                        Network <Object> net = (Network<Object> context.getProjection ("communication";
                       
                        int number_of_neighbours = 0;
                        int number_of_noncons = 0;
                        Iterable<Object> neighbours = net.getAdjacent(this);
                        for (Object obj : neighbours) {
                                number_of_neighbours++;
                                boolean neighbourConsumingStatus = ((Person) obj).GetConsumingStatus();
                                if (neighbourConsumingStatus == false)  {
                                        number_of_noncons++;
                                }
                        }
                        if (number_of_noncons == number_of_neighbours) {
                                IsConsuming = false;
                                LastTimeChangeConcernedFromConsumingToNonConsuming = 0;
                        }
                }
        }       
        private void NonConsumingChangeFromConcernedToNonConcerned () {
                if ((IsConcerned == true) && (IsConsuming ==false) && (LastTimeChangeConcernedFromConsumingToNonConsuming > 20)) {
                        IsConcerned = false;
                }
        }
        public boolean GetConcernStatus() {
                return IsConcerned;
        }
        public boolean GetConsumingStatus() {
                return IsConsuming;
        }
}
MyStyle.java代码如下:
public class MyStyle extends DefaultStyleOGL2D {
        @Override
        public Color getColor(Object obj) {
                if (obj instanceof Person) {
                        Person agent = (Person) obj;
                        if (agent.GetConsumingStatus() == true) {
                                return Color.BLUE;
                        }
                        else {
                                return Color.RED;
                        }
                }
                else {
                        return null;
                }
        }
        @Override
        public VSpatial getVSpatial(Object obj, VSpatial shape) {
                if (obj instanceof Person) {
                        Person agent = (Person) obj;
                        if (agent.GetConcernStatus() == true) { // consuming
                                return shapeFactory.createRectangle(10, 10); // cubic
                        }
                        else {
                                return shapeFactory.createCircle(3, 10);
                        }
                }
                else {
                        return null;
                }
        }
}
MyContextBuilder.java代码如下:
public class MyContextBuilder implements ContextBuilder<Object> {
        public Context build(Context<Object> context) {               
                ContinuousSpaceFactory spaceFactory = ContinuousSpaceFactoryFinder.createContinuousSpaceFactory(null);
                ContinuousSpace <Object> space = spaceFactory.createContinuousSpace ("space", context, new SimpleCartesianAdder<Object>(),
                        new repast.simphony.space.continuous.WrapAroundBorders(), new double[]{1, 1});
               
                for (int i=1; i<=3; i++){
                        Person p = new Person(space, true, true);
                        context.add(p);
                }
                for (int i=1; i<=3; i++){
                        Person p = new Person(space, true, false);
                        context.add(p);
                }
                for (int i=1; i<=47; i++){
                        Person p = new Person(space, true, false);
                        context.add(p);
                }
                for (int i=1; i<=47; i++){
                        Person p = new Person(space, false, false);
                        context.add(p);
                }               
                // create network projection
                NetworkBuilder <Object> netBuilder = new NetworkBuilder<Object>("communication", context, false);
               
                NetworkGenerator gen;
                gen = new WattsBetaSmallWorldGenerator(0.25, 8, false); // prob connected, degree, symmetrical = false
                netBuilder.setGenerator(gen);
                netBuilder.buildNetwork();

                RunEnvironment.getInstance().endAt(1000);
                return context;
        }
}
回复此楼
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

erghper

铜虫 (小有名气)

【答案】应助回帖

你给的代码看不出啥问题,我觉得关键是你要根据Java运行机制,一步一步去排除错误,比如你要调用某个方法,你最好在这个方法里面打印一下,程序是不是进入了这个方法等等
2楼2014-11-18 09:13:48
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 water11 的主题更新
信息提示
请填处理意见