5行执行了多年仍未得出结果的代码仔细分析了下这5行,貌似时间复杂度,空间复杂度都不大,为嘛就是执行效率这么低?for(Girl girl = Girls.first(); !myGirlFriend.like(me); girl = Girls.next()){
if(!girl.hasBoyFriend(now) && i.like(girl)){
GirlFriend myGirlFriend = (GirlFriend)girl;
}
}
if(!girl.hasBoyFriend(now) && i.like(girl)){
GirlFriend myGirlFriend = (GirlFriend)girl;
}
}
getHouse()
Exception in thread "main" java.lang.NullPointerException以上2个方法报错,然后还有其他未知异常
还有的话,就是getFather()这个权限过低。
if(!girl.hasBoyFriend(now) && isGirl(girl)){
GirlFriend myGirlFriend = (GirlFriend)girl;
}
就可以了。。表示这样就OK了
return getMasterJob();
结果为:程序员 as 民工
for (Girl girl = Girls.first(); !myGirlFriend.like(me); girl = Girls.next()) {
if (i.like(girl)) {
if (!girl.hasBoyFriend(now)) {
GirlFriend myGirlFriend = (GirlFriend) girl;
} else {
GirlFriend myGirlFriend = waqiangjiao(girl);
}
}
}
private girl wagiangjiao(Girl girl){
if(getMoney()>X000000&&getHouse()>1&&getFather().equals("李XX")){
return girl;
}
return null;
造 成了NullPointerException
#erro1111 undefined declaration myGirlFriend!
for(Girl girl = Girls.first(); !myGirlFriend.like(me); girl = Girls.next()){
if(!girl.hasBoyFriend(now) && i.like(girl)){
GirlFriend myGirlFriend = (GirlFriend)girl;
}
}
這代碼寫的有問題啊,GirlFriend myGirlFriend = (GirlFriend)girl;
出了這個if的大括號,變量就不可見了有沒有!花心如此活該沒有女友。
至少得是全局靜態變量有沒有!
return null ..
while(true) {
Girl girl = AcceptGirl();
...... // 后面不用看了,这里阻塞5年
}
for(Girl girl : girls){
if (Relationship.check(me, girl, Relationship.GIRL_FRIEND)) {
World.setPair(me, girl);
Life.execute(me, girl);
break;
}
}
实在不行你条件再降低点
if(!girl.hasBoyFriend(now) && isPerson(girl)){
GirlFriend myGirlFriend = (GirlFriend)girl;
}
GirlFriend myGirlFriend = (GirlFriend)girl;myGirlFriend只是一个在循环体内声明的对象,出了变量的作用域就被垃圾回收器回收了。你应该将他添加到你的上下文里:
Friends.GirlFriends.Add((GirlFriend)girl);
if(!girl.hasBoyFriend(now) && i.like(girl)){
GirlFriend myGirlFriend = (GirlFriend)girl;
me.m_money += getMoreMoney();
if (CanBuyHouse(me)&&!me.m_house)
{
me.m_house = true;
me.m_money -= housePay();
}
else if (CanBuyCar(me)&&!me.m_car)
{
me.m_car = true;
me.m_money -= carPay();
}
}
}[
结果导致if (CanBuyHouse(me)&&!me.m_house)
if (CanBuyCar(me)&&!me.m_car)
两个if执行总是失败
作为一个码农,基础语法和语言特征还是必须要正确掌握的。
private boolean flag = true;
public Girl() {
}
public Girl(boolean f) {
this.flag = f;
}
public boolean like(Boy b) {
return flag;
}
public boolean hasBoyFriend() {
return false;
}
public GirlFriend toGirlFriend() {
return new GirlFriend();
}
}class GirlFriend extends Girl {
}class Boy {
private boolean flag = true;
public Boy() {
}
public Boy(boolean f) {
this.flag = f;
}
public boolean like(Girl g) {
return flag;
}
public static Boy getInstance() {
return new Boy(false);
}
}class GirlList {
public Girl next() {
return new Girl();
}
public Girl first() {
return new Girl();
}
}public class Test {
public static void main(String[] args) {
long t1 = System.currentTimeMillis();
Boy me = Boy.getInstance();
GirlList Girls = new GirlList();
Girl myGirlFriend = new Girl(false);
for (Girl girl = Girls.first(); !myGirlFriend.like(me); girl = Girls.next()) {
System.out.println("next...");
if (!girl.hasBoyFriend() && me.like(girl)) {
myGirlFriend = girl.toGirlFriend();
}
}
long t2 = System.currentTimeMillis();
System.out.println(t2 - t1);
}
}
while(true){
try{
Boy.findGirlFriend();
}
catch(OUTOFMONEYERROR a, NOHOUSEERROR b)
{}
}
还是没有必要吧!
从girl转型到woman ,可以考虑下的嘛
}
楼主自己交代吧,这个对象拷贝的过程中都发生了什么?
等号右边会不会是 (Woman)girl?还有啊,myGirlFriend 作用域只对当前循环有效,非外层的 myGirlFriend。
外层的 !myGirlFriend.like(me) 始终满足,这也是捕获girl变量芳心的条件,对吧?
身为高帅富的作者已经有一个GF但已经无爱,
但是他还是坚持遍历了一个圈子里所有的MM,
里面只要是他喜欢的、单身的MM,
他就成功地将其纳为第二GF。
当然,这个过程很短暂,可以理解为"曾经拥有"。
全过程周而复始。
甚至到了 Girls.next() 变成null还在继续。
生命不止,码妹不息。(开个玩笑,楼主莫怪哈)
if(!girl.hasBoyFriend(now) && i.like(girl)){
GirlFriend myGirlFriend = (GirlFriend)girl;
}
}第一行代码很可能因为myGirlFriend为空指针就直接崩溃了。
Girls.next()可能也是空指针,循环到第二行又崩溃了
还有线程/进程安全性,你确定myGirlFriend、girl引用只存在于你的主线程/进程?最大问题是第三行代码中的myGirlFriend为内部引用,与第一行的myGirlFriend不是同一个对象,结果就陷入了死循环结论:别说5年了,以这种时间复杂度能有运行结果那可真是奇了怪了
我觉得有道理 因为LZ的myGirlFriend不断的重新制定且循环不间断制定出了问题
getHouse()
Exception in thread "main" java.lang.NullPointerException哈哈哈!!!
if(i.like(girl)&&!girl.hasBoyFriend(now)){
Person child = me.add(girl).getChild();
if(child!=null){
return true;
}else{
break;
}
}
什么都解决了.....