Создание 2D-плоскости Co-Ordinate в Java с использованием циклов for?

Я пытаюсь создать программу CoordinateFinder.java, которая запрашивает у пользователя два целых значения от 1 до 5. Затем используйте пару циклов for для создания 2D координатной плоскости. Самолет должен печатать точку для каждой координаты на плоскости, кроме указанной пользователем, которая должна печатать X.

Пример того, что я пытаюсь сделать:

Enter your x coordinate: 
2
Enter your y coordinate: 
4

5 . . . . . 
4 . X . . . 
3 . . . . . 
2 . . . . . 
1 . . . . . 
0 1 2 3 4 5 

Что у меня есть:

import java.util.Scanner;
public class CoordinateFinder {

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

System.out.println("Please enter an X co-ordinate from 1-5: ");
int x = input.nextInt();

System.out.println("Please enter a y co-ordinate from 1-5:  ");
int y = input.nextInt();


for (int i = 5; i >= 1; i--) {
    System.out.print(i +" ");
    if (i == 0) {
        System.out.println("\n");
        System.out.println(" 5 4 3 2 1 ");  
    }
    for (int j = 4; j >= 0; j--) {
        System.out.print(" . ");
        if (j == 0) {
            System.out.println("\n");

        }
    }
}
}

}

Какие выходы:

5  .  .  .  .  . 

4  .  .  .  .  . 

3  .  .  .  .  . 

2  .  .  .  .  . 

1  .  .  .  .  . 

0 

5 4 3 2 1 
.  .  .  .  . 

Всегда ли это сетка 6 на 6?

mettleap 17.10.2018 21:39

Да, это так! @mettleap

Ian Hank 17.10.2018 21:47
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
2
640
1

Ответы 1

Во вложенных циклах FOR переменная i представляет ваше значение y, а переменная j представляет ваше значение x. Таким образом, в каждом цикле i вам нужно распечатать всю строку (значения y), а в каждом вложенном цикле 'j' вы определяете, что печатается в каждом столбце (значение x). Чтобы определить, нужно ли вам печатать X или ., вам нужно сравнить i и j с y и x, например:

import java.util.Scanner;

public class CoordinateFinder {

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

    System.out.println("Please enter an X co-ordinate from 1-5: ");
    int x = input.nextInt();

    System.out.println("Please enter a y co-ordinate from 1-5:  ");
    int y = input.nextInt();

    System.out.println("");

    for (int i = 5; i >= 1; i--) {
        System.out.print(i);

        for (int j = 1; j <= 5; j++) {
            if (i == y && j == x) {
                System.out.print(" X");
            } else {
                System.out.print(" .");
            }
        }

        System.out.print("\n");
    }

    System.out.println("0 1 2 3 4 5");
}

}

Выход:

Please enter an X co-ordinate from 1-5: 
2
Please enter a y co-ordinate from 1-5:  
4

5 . . . . .
4 . X . . .
3 . . . . .
2 . . . . .
1 . . . . .
0 1 2 3 4 5

Обратите внимание, что я изменил направление j в подцикле, чтобы представить возрастающие значения x при перемещении слева направо по сетке. Я оставил i уменьшающимся, чтобы представлять уменьшающиеся значения y при перемещении вниз по строкам. Остальные мои изменения касались форматирования.

На самом деле в этом есть большой смысл. Значит, не имеет значения, что мы печатаем ярлыки X строк просто как функцию печати? {System.out.println ("0 1 2 3 4 5");}

Ian Hank 17.10.2018 22:16

@IanHank Это должно иметь значение только в том случае, если сетка может быть другого размера. Вы не можете распечатать последнюю строку по ходу, но вы можете создать еще один цикл FOR за пределами оригинала (в конце), чтобы перебирать увеличивающуюся переменную и печатать числа.

Michael Bruesch 17.10.2018 22:24

Другие вопросы по теме