(Java) Я делаю горизонтальную линейку с циклами for

Я пытаюсь создать горизонтальную линейку, как показано ниже:

Код, который у меня есть сейчас:

public class JavaRuler {
    public static final int COUNT = 19;

    public static void main(String[] args) {
        Design();
        Inches();
        Number();
    }

    public static void Design() {

        for (int j = 1; j <= COUNT * 2 + 2; j++) {
            System.out.print("__");
        }
        System.out.println();
    }

    public static void Inches() {

        for (int i = 1; i <= COUNT * 2 + 2; i++) {
            System.out.print("'|");
        }
        System.out.println();
    }

    public static void Number() {
        for (int k = 1; k <= COUNT; k++) {
            System.out.print("___" + k);
        }   
    }
}

Размер линейки должен быть изменен в дюймах, и если операторы не разрешены (только для циклов), мой текущий вывод действительно близок, но я не могу понять, как уменьшить «_» в третьей строке, когда числа выходят за пределы 9. Любые советы?

Преобразуйте строку в int, подстроив префикс на основе длины этого int

Rogue 26.02.2019 04:03

Дополнительное примечание: см. Соглашения об именах Java

c0der 26.02.2019 07:56
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
2
230
3

Ответы 3

Я думаю, что мой пример здесь поможет

public static void Number() {
    for (int k = 1; k <= COUNT; k++) {
      System.out.print(("____" + k).substring(("" + k).length()));
    }
}

Результат

'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|
___1___2___3___4___5___6___7___8___9__10__11__12__13__14__15__16__17__18__19

Вы можете сослаться на это, но результат будет беспорядочным, если COUNT будет большим числом. Я также обновил некоторые из ваших кодов, чтобы inches и design не перекрывали последнее число.

public class JavaRuler {
    public static final int COUNT = 20;

    public static void main(String[] args) {
        Design(" ");
        Inches();
        Number();
        Design("|");
    }

    public static void Design(String s) { // Added parameter
        System.out.print(s + "_"); // Added
        for (int j = 0; j < COUNT * 2; j++) { // Updated
            System.out.print("__");
        }
        System.out.print(s); // Added
        System.out.println();
    }

    public static void Inches() {
        System.out.print("|"); // Added
        for (int i = 0; i < COUNT * 2; i++) { // Updated
            System.out.print("'|");
        }
        System.out.print("'|"); // Added
        System.out.println();
    }

    public static void Number() {
        System.out.print("|"); // Added
        for (int k = 1; k <= COUNT; k++) {
            String underScore = "   "; // Added
            int length = (int) (Math.log10(k - 1) + 1); 
            for (int i = 1; i < length; i++) {
                underScore = underScore.replaceFirst(" ", ""); // Added
            }
            System.out.print(underScore + k); // Updated
        }
        System.out.print("|"); // Added
        System.out.println();

    }
}

Результат:

 _________________________________________________________________________________ 
|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|'|
|   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  20|
|_________________________________________________________________________________|

Я вернулся к этому позже сегодня, и это поразило меня! Я понял!

public class Ruler {
public static final int COUNT = 19;

public static void main(String[] args) {
    Design();
    Inches();
    Numbers();
}

public static void Design() {

    for (int j = 1; j <= COUNT * 2 + 2; j++) {
        System.out.print("__");
    }
    System.out.println();
}

public static void Inches() {
    System.out.print("|");
    for (int i = 1; i <= COUNT * 2 + 2; i++) {
        System.out.print("'|");
    }
    System.out.println();
    System.out.print("");
}

public static void Numbers() {
    System.out.print("|");
    for (int k = 1; k <= 9; k++) {
        System.out.print("___" + k);
    }
    System.out.print("___");
    for (int m = 10; m <= COUNT; m++){
        System.out.print(m + "__");
        }
    System.out.print("|");
    }
}

Я думаю, что это не сработает, если COUNT имеет более 2 цифр (100?). И это не сработает, если COUNT меньше 9 (например, 5).

Dang Nguyen 27.02.2019 02:44

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