PDA

View Full Version : سوال: ساخت و مقداردهی یه آرایه ی String با Netbeans یا eclips



Mr.Diako
چهارشنبه 09 اسفند 1391, 09:47 صبح
سلام خدمت دوستان .
من یه برنامه نوشتم که توش چندتا آرایه از انواع مختلف (int ,float, String) تعریف کردم و باهاش می خوام نام ، نام خانوادگی ، تعداد واحد و معدل 10 تا دانشجو رو از کاربر بگیرم اما همین که حلقه یه بار میچرخه توی در یافت کردن آرایه های رشته ایم (آرایه ی Name و آرایه ی Family ) اختلال ایجاد میشه . مثلا من دوتا درخواست از کاربر دارم و انتظار دارم که اینجوری براش نمایش داده بشه:
Please Enter Your Name :

Please Enter Your Family :

اما همینکه حلقه یه بار چرخید اینجوری میشه :
:Please Enter Your Name :Please Enter Your Family
در ضمن اینم بگم که از کد ()nextLine."نام شیء "
هم استفاده می کنم اما باز هم قاطی میشه.
از دوستان عزیز میخوام یه کمکی به این عضو کوچیک سایت هم بکنن...
با تشکر.

M0TR!X
چهارشنبه 09 اسفند 1391, 10:44 صبح
سلام.

قبل از دریافت مقدار از ورودی دستور زیر رو وارد کن :

System.Out.println();

maktoom
چهارشنبه 09 اسفند 1391, 10:54 صبح
سلام
پیشنهاد بنده اینه که از فرمت سی (printf) برای اینجور جاها استفاده کنید. هم کنترل بهتری روی نمایش داده ها و هم نوع داده های نمایشی دارید.

Mr.Diako
پنج شنبه 10 اسفند 1391, 09:24 صبح
سلام
پیشنهاد بنده اینه که از فرمت سی (printf) برای اینجور جاها استفاده کنید. هم کنترل بهتری روی نمایش داده ها و هم نوع داده های نمایشی دارید.



مگه توی محیط نت بینز یا ای کلیپس میشه از printf استفاده کرد؟

Mr.Diako
پنج شنبه 10 اسفند 1391, 09:26 صبح
...........

Mr.Diako
پنج شنبه 10 اسفند 1391, 09:34 صبح
سلام.

قبل از دریافت مقدار از ورودی دستور زیر رو وارد کن :

System.Out.println();

متشکرم باشه حتما امتحان می کنم.
فقط میشه دلیل اینکه باید این کار رو انجام داد چیه آیا به منطق جاوا بر میگرده ؟
اگه بیشتر توضیح بدید ممنون میشم.

Hybrid
پنج شنبه 10 اسفند 1391, 11:53 صبح
مگه توی محیط نت بینز یا ای کلیپس میشه از printf استفاده کرد؟
بله ، میشه استفاده کرد ( شبیه C++‎‎/C ) ، به این خاطر که System.out به یک شی از نوع PrintStream ارجا داره و این کلاس برای راحتی کار این متد(printf ) رو برای فرمت بندی کردن خروجی ها تعریف کرده ، به همین دلیل به جای ساختن شی از کلاس PrintStream میتونید راحت از طریق System.out بهش دسترسی داشته باشین . راهنمای مشخصه های تبدیل و فرمت دهی رو هم میتونید از Java API Documentation مشاهده کنید.


System.out.printf("%d %(d %+d %05d", 4,-4,4,4);

برای خواندن مشخصات 10 نفر هم میتونید ورودی ها رو داخل یک حلقه for بخونید . یک نمونه مثال واست نوشتم تا منظورم رو بهتر بگیری :

String[] names = new String[10];//store names of student in this array
float[] average = new float[10];//store average of student
int[] tedadVahed = new int[10];//store tedadVahed of student
Scanner input = new Scanner(System.in);

for(int counter=0;counter<10;counter++){
System.out.println((counter+1) + " Student :");
System.out.print("Please enter name : ");
if(input.hasNext()){
names[counter] = input.next();
}
System.out.print("Please enter Tedad Vahed : ");
if(input.hasNextInt()){
tedadVahed[counter] = input.nextInt();
}
System.out.print("Please enter average : ");
if(input.hasNextFloat()){
average[counter] = input.nextFloat();
}
System.out.println("-----------------------");
}

System.out.println("_______________");
for(int counter=0;counter<10;counter++){
System.out.println("Name :" + names[counter] + " ,TedadVahed :" + tedadVahed[counter] + " ,Average :" + average[counter]);
}

Mr.Diako
جمعه 11 اسفند 1391, 18:22 عصر
بله ، میشه استفاده کرد ( شبیه C++‎‎‎‎/C ) ، به این خاطر که System.out به یک شی از نوع PrintStream ارجا داره و این کلاس برای راحتی کار این متد(printf ) رو برای فرمت بندی کردن خروجی ها تعریف کرده ، به همین دلیل به جای ساختن شی از کلاس PrintStream میتونید راحت از طریق System.out بهش دسترسی داشته باشین . راهنمای مشخصه های تبدیل و فرمت دهی رو هم میتونید از Java API Documentation مشاهده کنید.


System.out.printf("%d %(d %+d %05d", 4,-4,4,4);

برای خواندن مشخصات 10 نفر هم میتونید ورودی ها رو داخل یک حلقه for بخونید . یک نمونه مثال واست نوشتم تا منظورم رو بهتر بگیری :

String[] names = new String[10];//store names of student in this array
float[] average = new float[10];//store average of student
int[] tedadVahed = new int[10];//store tedadVahed of student
Scanner input = new Scanner(System.in);

for(int counter=0;counter<10;counter++){
System.out.println((counter+1) + " Student :");
System.out.print("Please enter name : ");
if(input.hasNext()){
names[counter] = input.next();
}
System.out.print("Please enter Tedad Vahed : ");
if(input.hasNextInt()){
tedadVahed[counter] = input.nextInt();
}
System.out.print("Please enter average : ");
if(input.hasNextFloat()){
average[counter] = input.nextFloat();
}
System.out.println("-----------------------");
}

System.out.println("_______________");
for(int counter=0;counter<10;counter++){
System.out.println("Name :" + names[counter] + " ,TedadVahed :" + tedadVahed[counter] + " ,Average :" + average[counter]);
}

ممنون از راهنماییتون
البته خودم یه چیزایی نوشتم و کار کرد فقط من جایی که شما از hasnext استفاده کردید از nextInt استفاده کردم و برام این سوال پیش میاد که این دوتا یه چیز هستند
یا چون شما با یه IDE دیگه غیر از Netbeans نوشتید اینجوری در اومده این کد منه :
و در کل میخوام نظر شما رو در مورد کدی که نوشتم بدونم
بازم ممنون.


class myInfo
}



















;[int [] unit = new int[4
;[float [] avg =new float[4

;[String [] name =new String[4

;[String [] family = new String[4



(public static void main(String[]args
}
;(Scanner input=new Scanner(System.in

;() myInfo m=new myInfo




;(": System.out.println("Please Enter Information of 4 Students

;(": System.out.println("Name Family Units Averages





(++for(int i=0;i<4;i

}



;(": System.out.println("Please Enter Name of "+(i+1)+" Student



;()m.name[i]=input.nextLine




;(": System.out.println("Please Enter Family of "+(i+1)+" Student
;()m.family[i]=input.nextLine


;(": System.out.println("Please Enter Count of Passed Units of "+(i+1)+" Student
;()m.unit[i]=input.nextInt

;(": System.out.println("Please Enter Average of "+(i+1)+" Student
;()m.avg[i]=input.nextFloat
;()input.nextLine
{

{
{

Hybrid
جمعه 11 اسفند 1391, 18:42 عصر
ممنون از راهنماییتون
البته خودم یه چیزایی نوشتم و کار کرد فقط من جایی که شما از hasnext استفاده کردید از nextInt استفاده کردم و برام این سوال پیش میاد که این دوتا یه چیز هستند
یا چون شما با یه IDE دیگه غیر از Netbeans نوشتید اینجوری در اومده این کد منه :
و در کل میخوام نظر شما رو در مورد کدی که نوشتم بدونم

خیر ربطی به IDE نداره ، hasNext چک میکنه ببینم اصلا چیزی وجود داره یا نه ، hasInt چک میکنه که آیا عدد صحیحی وارد شده یا نه ، اگر میخواین عدد صحیحی رو از ورودی بگیری از گزینه دوم و اگر میخواین چک کنید که رشته ای وارد شما از گزینه hasNext استفاده کنید . چون آرایه name از نوع رشته هست من از hasNext استفاده کردم.

Mr.Diako
جمعه 11 اسفند 1391, 19:09 عصر
خیر ربطی به IDE نداره ، hasNext چک میکنه ببینم اصلا چیزی وجود داره یا نه ، hasInt چک میکنه که آیا عدد صحیحی وارد شده یا نه ، اگر میخواین عدد صحیحی رو از ورودی بگیری از گزینه دوم و اگر میخواین چک کنید که رشته ای وارد شما از گزینه hasNext استفاده کنید . چون آرایه name از نوع رشته هست من از hasNext استفاده کردم.

بازم از شما متشکرم.
من میخوام جاوا رو کاربردی یاد بگیرم.
شما یه کتاب خوب سراغ دارین به من معرفی کنید؟
البته اگه انگلیسی هم با شه مهم نیست بلکه مهم کاربردی بودن کتابه .
ممنون میشم.