我正在為我的學校作業制作進度條。但是當我運行我的代碼時,我的進度條出現在我的括號外,但 = 大多數在括號內。
public static String repeatString(int number, String str) {
for (int i = 0; i < number; i ) {
System.out.print(str);
}
return str;
}
public static String formatPercentage(int percentage) {
if (percentage == 100) {
return "done";
}
else{
return percentage "%";
}
}
public static String formatBar(int percentage, int length) {
int amount = percentage * length/ 100;
int size = length - amount;
return "[" repeatString(amount, "=") repeatString(size, " ") "] " formatPercentage(percentage);
}
這是結果:
[= ] 5%
== [= ] 20%
======= [= ] 70%
==========[= ] done
============== [= ] 70%
uj5u.com熱心網友回復:
將您的repeatString方法更改為以下內容:不要在此處列印任何內容,只需構建字串并將其回傳。
public static String repeatString(int number, String str) {
String pad = "";
for (int i = 0; i < number; i ) {
pad = str;
}
return pad;
}
uj5u.com熱心網友回復:
嘗試這個:
public class ProgressBar {
private int length;
private int maxSteps;
private int step;
private char symbol;
public ProgressBar(int length, int maxSteps, char symbol) {
this.length = length;
this.maxSteps = maxSteps;
this.symbol = symbol;
}
public void increment() {
increment(1);
}
public void increment(int numSteps) {
step =numSteps;
print();
}
private void print() {
float percentage = (float)step/(float)maxSteps;
int numSymbols = (int) Math.floor((double)length*percentage);
StringBuilder builder = new StringBuilder();
for (int i = 0; i < Math.min(numSymbols, length); i ) {
builder.append(symbol);
}
for (int i = Math.min(length, numSymbols); i < length; i ) {
builder.append(' ');
}
builder.append(String.format("[%s ]", symbol));
if (numSymbols >= length) {
builder.append(" done");
} else {
builder.append(String.format("%d %%", (int)(percentage*100)));
}
System.out.println(builder.toString());
}
public static void main(String [] args) {
ProgressBar bar = new ProgressBar(10, 50, '=');
bar.increment(10);
bar.increment(15);
bar.increment(20);
bar.increment(5);
System.out.println("Now exceeding max..");
bar.increment(10);
bar.increment(5);
}
}
uj5u.com熱心網友回復:
大于或小于值范圍的值會在您的示例中產生不良影響!向您的formatBar函式添加范圍檢查以截取不在 0 到 100 范圍內的值。
例如:
public static String formatBar(int percentage, int length) {
if(percentage < 0 || percentage > 100) return "Out of range: " percentage;
int amount = percentage * length/ 100;
int size = length - amount;
return "[" "=".repeat(amount) " ".repeat(size) "] " (percentage == 100 ? "done" : percentage "%");
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/341708.html
標籤:爪哇
