gpt4 book ai didi

java - 手动编译而不是使用 netbeans 时 Java 中奇怪的文本格式

转载 作者:行者123 更新时间:2023-12-01 15:40:56 26 4
gpt4 key购买 nike

在我的大学,我们经常收到的编程作业(至少现在)通常涉及控制台编程。当我在 Netbeans 中创建程序并从那里编译和运行时,一切都按预期工作...但是,当使用 javac filename.java 手动编译并使用 java filename 运行时,在打印行时出现奇怪的格式错误...( System.out.println 和 System.out.printf)

以此为例。我正在打印一个表的内容,该表在 Netbeans 中运行时如下所示:

Hybel Leietager      Saldo
--------------------------
1A Ole Johan 6000
1B Erik Smith 12000
1C TOM HYBEL 0
1D Alan Turen 9000
1E Tim Verner 33000
1F Anders Tanen 4999
2A Torvald Linus 9000
2B Rikard Stall 5001
2C Bill Weitz 10000
2D Steve Job 15000
2E Steve Woz 123
2F Denis Rich 2400
3A James Goblin 88000
3B Mark Sukker 456000
3C Karl Bagasje 6000
3D TOM HYBEL 0
3E Ada Love 250
3F Don Knut 55000

Periode: 9/2011
Total fortjeneste: 1400500

但是,当手动编译和运行时我得到这个:

Hybel Leietager      Saldo
--------------------------
6000 Johan
12000k Smith
0TOM HYBEL
9000an Turen
33000 Verner
4999Anders Tanen
9000 Torvald Linus
5001Rikard Stall
10000l Weitz
15000e Job
123eve Woz
2400nis Rich
88000ames Goblin
456000k Sukker
6000Karl Bagasje
0TOM HYBEL
250 Love
55000nut

Periode: 9/2011
Total fortjeneste: 1400500

我不明白,打印出来的函数是一个带有 System.out.println 或 printf 的简单 for 循环...有人明白为什么会发生这种情况吗?

这是代码,有点难以理解,因为它是用挪威语编写的(我知道,不好的做法,它应该都是英语......但我们需要在类里面这样做,糟糕的老师,糟糕! )

基本上,lengdenAvLengsteNavn() 会查找最长的名称(列在“Leietager”下)。 genererOversiktTop() 创建标题行,并具有所需的间距(取决于最长的名称)。标题行是“Hybel Leietager.....Saldo”。 Horizo​​ntalSkille() 打印出水平分隔符(“--------....”),而 hybelOversiktLinje() 实际上以正确的间距打印代表 hybel(公寓)的行...如您所见,没有使用制表符或/r...

private void skrivOversikt () {
System.out.println("*** Hybel Oversikt *** \n");
String oversiktTop = genererOversiktTop();
System.out.println(oversiktTop);
System.out.println(horizontalSkille (oversiktTop.length()));

for(int i = 0; i < etasjer.length; i++) {
Etasje etasje = etasjer[i];
for(int j = 0; j < etasje.hybler().length; j++) {
Hybel hybel = etasje.hybler()[j];
System.out.print(hybelOversiktsLinje (oversiktTop, hybel) + "\n");
}
}

System.out.println();
System.out.println("Periode: " + innevaerendeMaaned + "/" + innevaerendeAar);
System.out.println("Total fortjeneste: " + totalFortjeneste);
} //Skriver ut en oversikt over alle hybler, leietagere og deres saldo

private String genererOversiktTop () {
String oversiktsTop = "Hybel Leietager";
int leietagerSaldoSkille = lengdenAvLengsteNavn() - "Leietager".length();

for (int i = 0; i < leietagerSaldoSkille; i++) {
oversiktsTop += " ";
}

return oversiktsTop + " Saldo";
}

private String horizontalSkille (int lengde) {
String skille = "";

for (int i = 0; i < lengde; i++) {
skille += "-";
}

return skille;
}

private String hybelOversiktsLinje (String oversiktsTop, Hybel hybel) {
int leietagerIndex = oversiktsTop.indexOf("Leietager");
int saldoIndex = oversiktsTop.indexOf("Saldo");
String linje = hybel.romNavn();

while (linje.length() < leietagerIndex) {
linje += " ";
}

linje += hybel.leietagerNavn();

while (linje.length() < saldoIndex) {
linje += " ";
}

return linje + hybel.saldo();
}

private int lengdenAvLengsteNavn () {
int lengsteLengde = 0;

for (int i = 0; i < etasjer.length; i++) {
for (int j = 0; j < etasjer[i].hybler().length; j++) {
Hybel hybel = etasjer[i].hybler()[j];

if (hybel.leietagerNavn().length() > lengsteLengde)
lengsteLengde = hybel.leietagerNavn().length();
}
}

return lengsteLengde;
}

最佳答案

您正在名称后打印 '\r' 字符。该字符在这两个终端上的解释不同。

关于java - 手动编译而不是使用 netbeans 时 Java 中奇怪的文本格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8036942/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com