我要做的是基本上制作一个程序,根据输入显示加拿大各省的人口管道图。
现在,我编写的程序在打印结果之前只需要一个省和它的人口,然后对每个后续的省/地区都这样做。
我想让它获取数据,然后在结束时打印整个图表,而不是单独打印信息。
我已经回顾了整章,我还查看了Stackexchange网站。虽然我找不到任何有关此事的内容。这不可能吗?
这是我的代码:
import java.util.Scanner;
public class printPopChart {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Please enter the number of provinces");
int pNum = in.nextInt();
for (int i = pNum; i > 0; i--){
System.out.println("Province: ");
String province = in.next();
System.out.println("Population: ");
double pPop = in.nextDouble();
double pipes = numberOfPipes(pPop);
printBar(province, pipes);
}
}
public static double numberOfPipes(double pop) {
return Math.ceil(pop / 250000);
}
public static void printBar(String province, double pop) {
System.out.println("Province/Territory Population "); // 32 between Start and word Population
System.out.print(province);
spaceBetween(province);
for (int i = 0; i <= pop; i++) {
System.out.print("|");
}
System.out.println();
}
public static void spaceBetween(String province)
{
for (int i = 1; i <= (32 - province.length()); i++) {
System.out.print(" ");
}
}
}
我对方法和Java一般都比较新(这只是我在课程的第5周)所以我不知道如何保持输出直到结束,以便只打印一个大图表:
Province/Territory Population
Alberta |||||||||||||||||
British Columbia |||||||||||||||||||
Manitoba ||||||
如果你感兴趣的话,这是我在使用其中一个答案后所做的:
import java.util.Scanner;
public class printPopChart {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String temp = "";
System.out.println("Please enter the number of provinces");
int pNum = in.nextInt();
for (int i = pNum; i > 0; i--){
System.out.println("Province: ");
String province = in.next();
System.out.println("Population: ");
double pPop = in.nextDouble();
double pipes = numberOfPipes(pPop);
temp += printBar(province, pipes);
}
System.out.println("Province/Territory Population "); // 32 between Start and word Population
System.out.print(temp);
}
public static double numberOfPipes(double pop) {
return Math.ceil(pop / 250000);
}
public static String printBar(String province, double pop) {
String printB = "";
printB += province;
printB += spaceBetween(province);
spaceBetween(province);
for (int i = 1; i <= pop; i++) {
printB += ("|");
}
return printB + "\n";
}
public static String spaceBetween(String province)
{
String spaceB = "";
for (int i = 1; i <= (32 - province.length()); i++) {
spaceB +=" ";
}
return spaceB;
}
}
答案 0 :(得分:1)
您可以创建一个名为temp的String,并将新的String连接到该String并在末尾打印所有内容。
例如:
String temp = "";
然后将所有新的字符串添加到此临时字符串。
temp + = "Province/Territory";
temp += "\t Population \n"
\ t是制表符的特殊字符,\ n是新行的特殊字符。如果你继续这样做,你将得到一个字符串,你可以在完成所有事情后打印该字符串。
您还可以了解printf,它可以帮助您正确格式化显示。您可以在此处详细了解:How to use formatting with printf correctly in Java
答案 1 :(得分:0)
我会保留List<String>
个输出:
List<String> out = new LinkedList<>();
//elsewheres, add a message to be printed
out.add("Error 42: Missing Cowbell");
//afterwards, print all the added strings
out.forEach(System.out::println);
//optionally, clear the list after printing
out.clear();
如果您需要格式化输出,则有String#format
:
out.add(String.format("Two-place decimal: %.2f", 3.14159F));