2013-10-27 210 views
0

通常情况下,这个例外是由零除。唯一的问题是,当我将分母中的变量的值记入数值不为零时。代码:arithemetic异常被抛出,但为什么?

breuk.m

#import "breuk.h" 

@implementation breuk 
@synthesize tellerBreuk; 
@synthesize noemerBreuk; 
@synthesize ggd; 
@synthesize quotientBreuk; 

- (id)initWithTeller:(int)mijnTeller andNoemer:(int)mijnNoemer{ 

self = [super init]; 
if(self){ 
    int u = mijnTeller; 
    int v = mijnNoemer; 
    int temp; 

    while (v != 0){ 
     temp = u % v; 
     u = v; 
     v = temp; 
    } 
    ggd = u; 
    self.tellerBreuk = mijnTeller/ggd; 
    self.noemerBreuk = mijnNoemer/ggd; 
    NSLog(@"%i de ggd is %i", self.noemerBreuk, ggd); 

    //self.quotientBreuk = (float)mijnTeller/mijnNoemer; 
} 
return self; 
} 

@end 
+0

你怎么知道它不是零?你在分部之后登录。 – Mat

+0

它给self.tellerBreuk上的绿色错误= mijnTeller/ggd; nslog被执行,并且说ggd不为零 – user2895954

+0

如果它在self.tellerBreuk = mijnTeller/ggd上抛出异常;行,你的NSLog不会记录任何东西,所以在该语句前添加NSLog,并检查ggd是不是0 – ogres

回答

2

查看评论:

if(self){ 
int u = mijnTeller; // For example u == 0 
int v = mijnNoemer; // and v == 0 
int temp; 

while (v != 0){ // you don't come in while loop 
    temp = u % v; 
    u = v; 
    v = temp; 
} 
ggd = u; // ggd is then == 0 
self.tellerBreuk = mijnTeller/ggd; // Error: division by zero 
self.noemerBreuk = mijnNoemer/ggd; 
NSLog(@"%i de ggd is %i", self.noemerBreuk, ggd); 

}

+0

为true,但mijnTeller为4,mijnNoemer为2.所以ggd变成2不是0 – user2895954

相关问题