Я пытаюсь создать программу 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
. . . . .
Да, это так! @mettleap




Во вложенных циклах 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");}
@IanHank Это должно иметь значение только в том случае, если сетка может быть другого размера. Вы не можете распечатать последнюю строку по ходу, но вы можете создать еще один цикл FOR за пределами оригинала (в конце), чтобы перебирать увеличивающуюся переменную и печатать числа.
Всегда ли это сетка 6 на 6?