Как инвертировать Int с помощью циклов - PullRequest
0 голосов
/ 04 мая 2020

У меня проблемы с обращением этого кода. то, что я пытаюсь получить как

, это то, что у меня есть до сих пор, но я не могу обернуться, как третий для l oop должен быть

publi c stati c void main (String [] args) {

    Scanner input = new Scanner(System.in); //gets the users input

    int rows;
    int number = 0;
    int i = 0;
    rows = input.nextInt(); //takes the users input from console 


    while (rows <= 0) {
        System.out.println("INVALID");
        rows = input.nextInt();
    }


    for (int c = 1; c <= rows; c++) {

            for (i = 0; i < c; i++) {
                System.out.print(++number + " ");
            }        

            for (int j = c; j < rows; j++) {
                System.out.print("* * ");
            }

            for(i = 0; i < c; i++) {
                System.out.print(number + " ");
                //number--;
            }

            System.out.println();   
    }

Ответы [ 4 ]

1 голос
/ 04 мая 2020

Перед запуском вашего последнего l oop вы должны сохранить number в некоторой временной переменной:

int temp = number;

for(i = 0; i < c; i++) {
    System.out.print(temp-- + " ");
}
1 голос
/ 04 мая 2020

Как я уже сказал в комментарии, вам нужно уменьшить значение number, но в то же время необходимо отслеживать самые высокие значения в строке, чтобы использовать его в качестве начального значения в следующей итерации. Примерно так должно работать:

public static void main(String[] args) {
  int rows;
  int number = 0;
  int highestValue = 0;
  int i = 0;
  rows = 5; 

  for (int c = 1; c <= rows; c++) {
      number = highestValue; // reset number to the highest value from previous line
      for (i = 0; i < c; i++) {
          System.out.print(++number + " ");
      }
      highestValue = number; // setting the highest value in line

      for (int j = c; j < rows; j++) {
          System.out.print("* * ");
      }

      for(i = 0; i < c; i++) {
          System.out.print(number-- + " "); // decrementing 
      }

      System.out.println();   
  }
0 голосов
/ 04 мая 2020

Это похоже на программу-образец, вы можете добавить number-- в вашу систему

 public static void main( String[] args ) 
    {
        Scanner input = new Scanner(System.in); //gets the users input

        int rows;
        int number = 0;
        int i = 0;

        rows = input.nextInt(); //takes the users input from console 


        while (rows <= 0) {
            System.out.println("INVALID");
            rows = input.nextInt();
        }


        for (int c = 1; c <= rows; c++) {

                for (i = 0; i < c; i++) {
                    System.out.print(++number + " ");
                }        

                for (int j = c; j < rows; j++) {
                    System.out.print("* * ");
                }

                for(i = 0; i < c; i++) {
                    System.out.print(number-- + " ");
                    //number--;
                }

                System.out.println();   
        }
    }   

enter image description here Такой тип шаблона вы можете создать с помощью коллекций

0 голосов
/ 04 мая 2020

Вам нужно реализовать это самостоятельно, потому что в противном случае существуют тонны библиотек, обрабатывающих массивы.

Вам необходимо выполнить следующие шаги:

  • Найдите способ прочитать введите (целые числа) в одну строку и сохраните их в каком-либо контейнере (массиве или списке).
    • Возможно, вам придется выделить, что такое одно целое число (например, «1 2 3» - это 3 целых числа, которые вы хотите перевернуть, а «12 3» - это только 2, а вы хотите перевернуть только 2) .
    • Вы должны убедиться, что введенные данные верны (например, пользователь может ввести «1 ab c»)
  • Вам необходимо перевернуть целые числа в пределах Контейнер или лучше скопировать оригинальный контейнер в обратном порядке. Для этого вам нужно только перебрать элементы контейнера и добавить их в целевой контейнер в обратном порядке
for (Integer in : inputList) {
    outputList.addFirst(in);
}

Если вы хотите печатать только целые числа, вам не нужно хранить их в списке, вы можете просто перебрать контейнер в обратном порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...