ورود

View Full Version : اشکال برنامه کجاست؟



Sa$HB2
دوشنبه 03 اسفند 1388, 18:41 عصر
سلام
من از جاوا چیز زیادی نمی دونم و تازه شروع کردم.

می خوام چند تا از متد ها ی کلاس String رو خودم تعریف کنم اما فعلا داخل اولیش موندم که subString. چند جا ارور می ده. کسی می تونه بگه اشکالم چیه؟ (ارورها رو با قرمز مشخص کردم.)


import java.util.Scanner;
public class Performance{
Scanner S=new Scanner (System.in);
String chr=S.next();
public String subString1(int N1, int N2)
{
char []chri=chr.toCharArray();
char [] std = null;
int j=0;
for(int i=N1;i<=N2;i++)
{
std[j]=chri[i];
j+=1;
}
return ???;
}
public static void main (String[]args)
{
String std1="sahra";
System.out.println(std1.subString1(1,3));
}
}

jlover
دوشنبه 03 اسفند 1388, 19:26 عصر
من برنامه رو اجرا نکردم
اما چند تا ایراد واضح درش میبینم :
اول شما باید بدونید که برنامه از متد ()main شروع میشه بنابراین ،دستورات زیر

Scanner S=new Scanner (System.in);
String chr=S.next();
باید درون متد اصلی قرار بگیره
یا
باید ابتدا در متد ()main نمونه ای از کلاس بسازید و اونوقت این دو تا دستور اجرا میشند(البته چون دستورات انتساب هستند،میتونند در حوزه ی کلاس اجرا بشند،وگرنه باید درون یک متد کپسوله بشند)
در واقع خطای دوم هم همین مساله رو نشون میده

خطای اول هم به خاطر اینه کهنوع مقدار بازگشتی رو String اعلام کردید ولی معلوم نیست چی رو دارین برمیگردونین

اگه بگین دقیقن چیکار میخاستید بکنید،یه نمونه ی ساده مینویسم براتون،چون الان دارم فکر میکنم مثلن اون Scanner چه کاربردی داره تو ان برنامه !؟

Sa$HB2
دوشنبه 03 اسفند 1388, 20:45 عصر
اول ممنون از پاسختون!


من برنامه رو اجرا نکردم
اما چند تا ایراد واضح درش میبینم :
اول شما باید بدونید که برنامه از متد ()main شروع میشه بنابراین ،دستورات زیر
کد:
Scanner S=new Scanner (System.in);
String chr=S.next();
باید درون متد اصلی قرار بگیره
یا
باید ابتدا در متد ()main نمونه ای از کلاس بسازید و اونوقت این دو تا دستور اجرا میشند(البته چون دستورات انتساب هستند،میتونند در حوزه ی کلاس اجرا بشند،وگرنه باید درون یک متد کپسوله بشند)
در واقع خطای دوم هم همین مساله رو نشون میده
:متفکر:


خطای اول هم به خاطر اینه کهنوع مقدار بازگشتی رو String اعلام کردید ولی معلوم نیست چی رو دارین برمیگردونین
آره خب. می دونم. منم اونجا علامت سوال گذاشتم. چون نمی دونم چه جوری باید String رو برگردونم.


اگه بگین دقیقن چیکار میخاستید بکنید،یه نمونه ی ساده مینویسم براتون
استاد بنده خواستن که:
« پنج متد replaceAll, compareTo, .length, replace, subString(int,int) را خودتان تعریف کنید. بعد یک String از ورودی دریافت کنید و این متدها را روی آن اجرا کنید»
من تا حالا روی subString کار کردم و اون برنامه هم مال همین بود.


،چون الان دارم فکر میکنم مثلن اون Scanner چه کاربردی داره تو ان برنامه !؟
نمی دونم :متفکر:

jlover
دوشنبه 03 اسفند 1388, 22:22 عصر
استاد بنده خواستن که:
« پنج متد replaceAll, compareTo, .length, replace, subString(int,int) را خودتان تعریف کنید. بعد یک String از ورودی دریافت کنید و این متدها را روی آن اجرا کنید»
من تا حالا روی subString کار کردم و اون برنامه هم مال همین بود.


خب ،اول باید ببینیم که هدف شما فقط پاس کردن درستونه یا یادگیری،اگه مورد اوله که خب من یه نمونه فعلن برای subString نوشتم براتون قرار میدم،اما اگه مورد دومه که توصیه میکنم اول جزوه ها و یک کتاب مرجع رو مطالعه کنید و صد البته مثالها و تمریناتش رو هم کار کنید و به هر حال بنده به شخصه خوشحال میشم کمکتون کنم
توی خود کدها توضیحاتی پیرامون برخی مختصات اولیه ی جاوا داده شده...
برای تکمیلش فعلن بنده وقت ندارم،اما تو روزهای آتی میشه تکمیلش کرد و چه بهتر شما هم تلاش کنی
اینم تقدیم شما ( گرچه هیچ این برنامه ها رو دوست ندارم،یعنی چی اصلنفخود سان این همه زحمت کشیده همه ی این متدهای مورد نیاز رو ساخته حالا ما...البته میدونم واسه تمرینه:چشمک:خودم یه بار یه روز کامل الگوریتم و شبهه کد های جمع و تفریق اعداد m و n رقمی رو نوشتم ،رفتم پیاده سازیشون کنم،یه کمی گشتم دیدم،دو تا کلاس قوی واسه هم جمع و تفریق هم کلی عملیات پیشرفته ی دیگه دارهفدیگه گفتم بیخیال الگوی خودم :لبخند: )


import java.util.Scanner;
public class StringMethods{

Scanner scanner ; // این متغیر رشته های ورودی کاربر رو دریافت میکنه،با هر کلید اینتر،اولین رشته ی تایپ شده ی کاربر رو به متغیر مورد نظر منتسب میکنه

/**
* // سازنده ی کلاس،بهتره متغیرهای کلاس اینجا مقداردهی اولیه بشند
*/
public StringMethods(){
scanner = new Scanner ( System.in );
}

public String subString(int n1, int n2, String str)
{
char []stringArray = str.toCharArray();
StringBuffer result = new StringBuffer() ; // این همون متغیریه که باید برگردونده بشه
// البته باید قبلش تبدیلش کنید به رشته
int j = 0 ;
for(int i=n1; i <= n2; i++,j++)
result.append(stringArray[i]);

return result.toString(); // می بینید که نتیجه به نوع رشته تبدیل میشه و به همین سادگی برگردونده میشه
}
public static void main (String[]args) {
/* اینجا نمونه ای از همین کلاس ساخته میشه تا بتونیم به متدها و متغیرهای نمونه ی تعریف شده در حوزه ش ارجاع
*
کنیم */
StringMethods sm = new StringMethods();
System.out.println(" لطفن رشته ی خود را با حروف لاتین و به صورت یکسره تایپ نمایید"+
"\nالبته بیش از 5 حرف داشته باشد");
String input = new String();
input = sm.scanner.next();
System.out.println("result of method substring(2,5)");
System.out.println( sm.subString(2, 5, input) );
}
}