שגיאה: missing a return statement - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

שגיאה: missing a return statement


tsachiy

Recommended Posts

היי חבר'ה מה קורה חג שמח

אני יודע שהשגיאה הזו קורית כאשר יכולה להיות סיטואציה שאין לה return כלומר שלא סגרתי את כל האפשרויות, אבל מישהו יכול להגיד לי מה חסר לי בדיוק?

(התוכנית קולטת מספר, ואז בתת פעולה בודקת האם הוא מספר מיוחד. מספר מיוחד זה מספר שהוא + המספר ההופכי שלו מבחינת הספרות הוא מספר ריבועי. למשל אם המספר הוא 47, אז 47+74 = 121. המספר 121 הוא ריבועי של 11, לכן 47 הוא מספר מיוחד). מדובר בשפת JAVA

import java.util.Scanner;

public class Question2

{

public static void main ( String[ ] args )

{

Scanner scan = new Scanner (System.in);

int num;

System.out.println ("Enter a number");

num=scan.nextInt();

if (special(num)==true)

System.out.println ("Number is special");

else

System.out.println ("Number is not special");

}

public static boolean special (int number) //תת פעולה שבודקת האם המספר מיוחד

{

int OppositeNum=0;

while (number!=0)

{

int temp;

temp=number%10;

OppositeNum=OppositeNum*10+temp;

number=number/10;

}

int sum;

sum=number+OppositeNum;

for (int k=1; k<=sum/2; k++)

{

if (k*k==sum)

return true;

else

return false;

}

}

}

קישור לתוכן
שתף באתרים אחרים

ברוך הבא לפורום.

להבא, תכתוב קוד בתוך תגית CODE, כדי שיהיה קריא.

לגופו של עניין, הreturn שלך נמצא בתוך לולאת הfor בלבד. תאורטית, יכול להיות מצב שהלולאה לא תתבצע בכלל ואז לא יהיה לך return.

האלגוריתם עצמו לא נכון גם כן. זה נכון שאם מצאת ריבוע ששוה לסכום - אפשר להחזיר true מיד. אבל מה שאתה תעשה היא תבדוק מספר אחד, ואם הריבוע שלו לא שווה לסכום, מיד תחזיר false בלי לבדוק את האחרים, שזה בבירור לא מה שהיית רוצה.

קישור לתוכן
שתף באתרים אחרים

הי אחי תודה על העזרה, כבר עליתי על זה אבל עכשיו הוא נותן לי NUmber is not special גם כשהמספר הוא כן:

import java.util.Scanner;
public class Question2
{
public static void main ( String[ ] args )
{
Scanner scan = new Scanner (System.in);
int num;
System.out.println ("Enter a number");
num=scan.nextInt();
if (special(num)==true)
System.out.println ("Number is special");
else
System.out.println ("Number is not special");
}
public static boolean special (int number) //תת פעולה שבודקת האם המספר מיוחד
{
int OppositeNum=0;
while (number!=0)
{
int temp;
temp=number%10;
OppositeNum=OppositeNum*10+temp;
number=number/10;
}
int sum, check=0;

sum=number+OppositeNum;
for (int k=1; k<=sum/2; k++)
{
if (k*k==sum)
check=1;
}
if (check==1)
return true;
else
return false;
}
}

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...