То, что я пытаюсь сделать, это в основном сделать программу, которая отображает диаграмму численности населения для канадских провинций на основе ввода.Наличие метода печати всех выходных данных в конце входов
Прямо сейчас, программа, которую я написал, занимает только одну провинцию и ее население, прежде чем печатать результат, а затем делает то же самое для каждой следующей провинции/территории.
Я хочу, чтобы он взял данные, а затем распечатал весь график в конце, а не отдельно, когда информация была напечатана.
Я рассмотрел всю главу, и я также проверил сайт 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 вообще (это только моя пятая неделя в курсе), так что я не знаю, как не провести выходные до конца так, чтобы напечатать только один большой график, как:
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;
}
}
Если вы идете это маршрут, тогда я рекомендую вам вместо этого использовать 'StringBuilder'. – Dayan
Там так много System.out.println и System.out.print из-за форматирования. Другого пути нет, кроме этого? – asdfghjklm
Существует много других способов, но если вы действительно хотите конкатенировать, используйте 'StringBuilder', чтобы избежать создания ошибочного количества строк. – Rogue