ورود

View Full Version : مشکل در این قطعه کد چیست؟



maryam za
سه شنبه 25 شهریور 1393, 15:50 عصر
با سلام
دوستان من قطعه کد زیر رو وقتی وارد قسمت اضافه کردن کاربر می شم توی لوپ می افته .... نمیدونم چرا؟
package Lib;


import java.io.IOException;


public class Library {

static int Status=0;
static int Stat=0;
static Book Records=new Book(null,null,null,null,null,null);
static User ArrUser[]=new User[1000];


public static void main(String[] args) {

System.out.println("Please Enter :\n 1:For add book\n 2:For add user\n 3:Search\n 4:Exit");



try {
Status = (System.in.read());
Stat=Status-48;
}
catch (IOException ex) {
ex.getStackTrace();
}
if (Stat==4){
Exit();
}
Switch(Stat);




}

public static int Switch(int mode){

if (mode==1){
RecordBook();
mode= Again();
Switch (mode);

}
else if (mode==2){
RecordUser();
mode=Again();
Switch (mode);
}
else if (mode==3){
Switch (mode);
}

return mode;
}

public static void RecordUser(){
System.out.println("You can enter 5 users each time");
int i = 5;

for(int j=0;j<=i;i++){
ArrUser[j]=new User();

System.out.println("Enter Name:");
String name= Records.scan();
ArrUser[j].name=name;

System.out.println("Enter Family:");
String family= Records.scan();
ArrUser[j].family=family;

System.out.println("Enter Code:");
String Code= Records.scan();
ArrUser[j].Code=Code;

System.out.println("------------------------------------");
System.out.println("Name:"+ ArrUser[0]+"Family:"+ ArrUser[1]+"Code:"+ArrUser[2]);
}
}

public static void RecordBook(){
System.out.println("Enter BookName:");
String BookName= Records.scan();
System.out.println("Enter WriterName:");
String WriterName= Records.scan();
System.out.println("Enter PublisherName:");
String PublisherName= Records.scan();
System.out.println("Enter ISBN:");
String ISBN= Records.scan();
System.out.println("Enter ID:");
String ID= Records.scan();
System.out.println("Enter Count:");
String Count= Records.scan();
System.out.println("------------------------------------");


}
public static int Again(){

System.out.println("Please Enter :\n 1:For add book\n 2:For add user\n 3:Search\n 4:Exit");

try {
Stat= System.in.read();
Stat=Stat-48;
}
catch (IOException e) {
e.printStackTrace();
}
return Stat;
}
public static void Exit(){
if (Stat==4){
System.out.println("Exit");
System.exit(0);
}
}
}

mohsen12345
سه شنبه 25 شهریور 1393, 16:58 عصر
for(int j=0;j<=i;i++)
خب این باعث می شه که کدت هیچ وقت از حلقه خارج نشه چون i بزرگتر می شه و j ثابت می مونه و شرط همیشه برقراره

dasssnj
سه شنبه 25 شهریور 1393, 17:27 عصر
آره دیگه چیز مشخصی بود. همین طور که این دوستمون گفتن این کد را :

for(int j=0;j<=i;i++)


با این عوض کنید :

for(int j=0;j<=i;j++)

موفق باشید.

maryam za
سه شنبه 25 شهریور 1393, 18:31 عصر
مرسی دوستان

maryam za
سه شنبه 25 شهریور 1393, 18:37 عصر
برای اینکه تعداد کاربرانی که می خواهیم وارد کنیم را از ورودی دریافت کنیم. کد را بصورت زیر نوشتم اما اجازه ی وارد کردن مقدار را نمیده و یه راست میره سراغ گرفتن اسم. مگه مقداری که system.in.read دریافت می کنه int نیست؟
public static void RecordUser(){
System.out.println("Please enter the number of users you want to add:");
int i=0;
try {
i=System.in.read();
} catch (IOException e) {
e.printStackTrace();
}
for(int j=0;j<=i;j++){
ArrUser[j]=new User();

System.out.println("Enter Name:");
String name= Records.scan();
ArrUser[j].name=name;

System.out.println("Enter Family:");
String family= Records.scan();
ArrUser[j].family=family;

System.out.println("Enter Code:");
String Code= Records.scan();
ArrUser[j].Code=Code;

System.out.println("------------------------------------");
System.out.println("Name:"+ ArrUser[0]+"Family:"+ ArrUser[1]+"Code:"+ArrUser[2]);
}
}

abdoullah.aberi
چهارشنبه 26 شهریور 1393, 01:14 صبح
شما دقیقا میتونی بگی میخوای چیکار کنی تا دوستان راحتر بتونن کمک کنن