Как сделать пробел для каждого подсчитанного числа? - PullRequest
1 голос
/ 15 мая 2011

Я пытаюсь создать программу, которая отображает информацию о вашей сети, и я пытаюсь сделать так, чтобы она выглядела немного красиво.Пока это CLI, и вот код, с которым у меня проблемы:

public class Computer {
    String manu;
    boolean power;
    String powerStr;
    String internalIP;
    String router;
    boolean connected;
    int length;
    String extIP;
    String line;
    String netInfo;
    int netLength;
    int space;

    void setIntIP(String ip) {
        this.internalIP = ip;
        if(router == null) {
            System.out.println("There is no router to connect to!");
            this.internalIP = null;
        }
    }

    void printInfo() {
        if(power == true) {
            powerStr = "on";
        }
        else
        {
            powerStr = "off";
        }
        System.out.println("The computer is "+powerStr+" and was made by "+manu);
    }

    void routingInfo() {
        if(router == null) {
            internalIP = "0.0.0.0";
            router = "0.0.0.0";
        }
        if(internalIP == null) {
            internalIP = "0.0.0.0";
            router = "0.0.0.0";
        }

        if(router == "0.0.0.0") {
            System.out.println("Not connected to the internet!");
        } else {
            netInfo = "+-------Network Information-----------+";
            line = "| Internal IP | "+internalIP;
            length = line.length();
            netLength = netInfo.length();
            space = netLength - length;
            System.out.println("+-------------------------------------+");
        }

    }
}

Мне нужно, чтобы, если в пространстве было 9, то было 9 пробелов.Как бы я это сделал?Спасибо!: D

Ответы [ 3 ]

3 голосов
/ 15 мая 2011

Вы можете использовать StringBuilder:

StringBuilder sb = new StringBuilder();
// add info
for (int i=0; i < space; i++)
    sb.append(" ");
// add info
// print it using sb.toString()

В качестве примечания (но важного) - не сравнивайте строки, используя ==, но с equals / equalsIgnoreCase(). (router.equals("0.0.0.0") вместо router == "0.0.0.0")

2 голосов
/ 15 мая 2011

Вы можете использовать String#format() для этого.

int length = 9;
String spaces = String.format("%" + length + "s", " ");
System.out.println("|" + spaces + "|"); // | nine spaces |

Вы даже можете использовать его через printf().

int length = 9;
System.out.printf("%" + length + "s%n", " "); // Nine spaces and a linebreak.

Каксовершенно другая альтернатива, используйте Arrays#fill().

int length = 9;
char[] chars = new char[length];
Arrays.fill(chars, ' ');
System.out.println(chars);
0 голосов
/ 15 мая 2011

Я не очень хорошо понимаю вопрос, но, возможно, вы ищете цикл for?

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