PDA

View Full Version : مشکل متد int



rzhnkh
سه شنبه 18 اردیبهشت 1397, 23:20 عصر
سلام به همگی
دوستان من یه کد نوشتم که تو 100 خط یک جدول ضرب رو برای من چاپ کنه . اما در آخر خروجی عدد 200 رو اضافه چاپ میکنه . کسی نظری داره؟
public class Main {

public static void main(String[] args) {
Main m = new Main();
System.out.println(m.multiplicationTable(10, 20));


}

public int multiplicationTable(int number1, int number2) {
int result = 0;
for (int j = 11; j <= number2; j++) {
for (int i = 1; i <= number1; i++) {


System.out.println(i + " * " + j + " = " + i * j);
result = i * j;


}
}


return result;
}
}

farhad_shiri_ex
چهارشنبه 19 اردیبهشت 1397, 01:33 صبح
System.out.println(m.multiplicationTable(10, 20));

این سیستم پرینتی که اینجا اومده آخرین مقدار result رو که از تابع شما داره برمیگرده چاپ میکنه!
شما که تو بدنه تابع دارید نمایش میدید اعداد را دیگه چه احتیاجی که آخرین مقدار را بازگشت بدید به تابع و اونجا هم چاپ کنید
و درضمن نیازی نیست که از کلاس Main یک آبجکت بسازید تابع جدول ضرب را استاتیک کنید می تونید تو تابع Main که استاتیک هست ازش استفاده کنید.
والبته اینطوری هم میتونید بنویسید!! مثلا اگر بخواهید که از علامت ضرب ریاضی استفاده نکنید و البته بدون حلقه با روش Recursive & Bit Binary Operator

java version

private static int cnt =0x1,index =11,result =0x0;
private static final int threshold = 20;
public static void main(String[] args) {
multiplicationTable2();
}

private static void multiplicationTable2() {
result += (index << 0x1) >> 0x1;
System.out.println(String.format("%d * %d = %d",cnt,index,result));
if (++cnt <= 0xa ) {
multiplicationTable2();
} else {
cnt = 0x1;
result =0x0 ;
if(++index <= threshold)
multiplicationTable2();
}
}


cpp version
static int cnt=0b0001,index =11,result =0b0000;
const int threshold = 20;

int main(int argc, char* argv[])
{
multiplicationTable2 ();
}
extern void multiplicationTable2() {
::result += (::index << 0b0001) >> 0b0001;
cout << ::cnt << " * " << ::index << " = " << ::result << endl;
if (++::cnt <= 0b1010 ) {
multiplicationTable2();
} else {
::cnt = 0b0001;::result =0b0000 ;
if(++::index <= ::threshold)
multiplicationTable2();
}
}

[