עבור לתוכן

שגיאה: missing a return statement

Featured Replies

פורסם

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

אני יודע שהשגיאה הזו קורית כאשר יכולה להיות סיטואציה שאין לה 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;

}

}

}

נערך על-ידי tsachiy

פורסם

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

להבא, תכתוב קוד בתוך תגית 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;
}
}

פורסם

בשורה

sum=number+OppositeNum;

אתה משתמש באותו NUMBER שכבר קיצצת בלולאה...

לכן תיצור משתנה שישמור לך את ה-NUMBER המקורי.

פורסם
  • מחבר

אלוף תודה

ארכיון

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

דיונים חדשים