2013-10-27 161 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

相關問題