У меня есть такой массив {0,0,0,0}, и я хочу обновлять массив с 0 до 1, но только по одному. Если я хочу обновить индекс 0 массива, массив должен быть обновлен с 0 до 1, если пользователь хочет обновить снова, тогда индекс 1 должен быть снова обновлен с 0 до 1 в массиве.

Вы хотите обновить массив? y / n Если y, то массив должен быть {1,0,0,0}

Хотите ли вы обновить снова, массив должен быть {1,1,0,0}, и так будет продолжаться, если пользователь снова захочет забронировать места. Моя проблема при создании этой программы заключается в том, что когда я обновляю массив, все элементы в массиве обновляются до 1 за раз. Я использую Java для этого кодирования.

package ferryassign;
import java.util.Scanner;

public class Ferryassign {

public static void businessclass_update(int myarray1[][]) // definition of function must be outside
    {
        for(int r=0;r<2;r++)
        {
            for(int c=0;c<5;c++)
            {
                if (myarray1[1][4]==1 && myarray1[10][4]==1)
                    System.out.println("Ferry Full");
                else if(myarray1[r][c]==0) // this one problem 
                    myarray1[r][c]=1;
                else if(myarray1[1][4]==1)
                    System.out.println("Business Class Full");
                    break;

            }
        }
    }

public static void main(String[] args)
{
    //main function 
                       //0,1,2,3,4
    int myarray1[][]=  {{0,0,0,0,0}, //0 Business seats
                        {0,0,0,0,0}, //1      
                        {},          //2      
                        {0,0,0,0,0}, //3 Economy seats 
                        {0,0,0,0,0},
                        {0,0,0,0,0},
                        {0,0,0,0,0},
                        {0,0,0,0,0},
                        {0,0,0,0,0},
                        {0,0,0,0,0},
                        {0,0,0,0,0}};

    Scanner input = new Scanner(System.in);
    char ans1;
    do {
            System.out.println("Do you want to buy business seats? y/n");
            char ans=input.next().charAt(0);
            switch(ans)
            {
                case 'y':
                    businessclass_update(myarray1);
                    for(int r=0;r<2;r++) // to print seats use for loop
                    {
                        for(int c=0;c<5;c++)
                        {
                            System.out.println(myarray1[r][c]);
                        }
                    }
                    break;
                case 'n':
                    System.out.println("No business seats selected");
            }
            System.out.println("Do you want to book seats again? y/n");
            ans1=input.next().charAt(0);
        }while(ans1=='y');

    }    
}
-4
MarcoReus 18 Сен 2018 в 20:32

2 ответа

Лучший ответ

Почему вы используете 2 цикла for? Вместо этого используйте две глобальные переменные r и c и увеличивайте их каждый раз, когда вы вызываете функцию и добавляете место.

  int r=0,c=0;             //r and c are global variables

  public static void businessclass_update(int myarray1[][]) 
  {   

           if (myarray1[1][4]==1 && myarray1[10][4]==1)
               System.out.println("Ferry Full");

            else if(myarray1[r][c]==0) 
                {
                         myarray1[r][c]=1;
                         c++;
                         if(c==5)                //If row is full move to next row
                         {
                             c=0;
                             r++;
                         }
                 }

            else if(myarray1[1][4]==1)
                System.out.println("Business Class Full");

}
0
soulphoenix 18 Сен 2018 в 17:53

Просто позаботьтесь о разрывах и скобах:

for(int c=0;c<5;c++)
{
    if (myarray1[1][4]==1 && myarray1[10][4]==1)
        System.out.println("Ferry Full");
    else if(myarray1[r][c]==0) { 
        myarray1[r][c]=1; // Since you are iterating it over an array, it will update all the positions 
        break; //With this break you'll do only one time
    }
    else if(myarray1[1][4]==1) {
        System.out.println("Business Class Full");
        break;
    }
}

Выход:

Do you want to buy business seats? y/n
y
1
1
0
0
0
1
1
0
0
0
Do you want to book seats again? y/n
y
Do you want to buy business seats? y/n
y
1
1
1
0
0
1
1
1
0
0
Do you want to book seats again? y/n
y
Do you want to buy business seats? y/n
y
1
1
1
1
0
1
1
1
1
0
0
sirandy 18 Сен 2018 в 17:51