有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

控制台条形图使用循环,无图形JAVA

目前正在编写一本书循环章节中的示例。基本上,有4个汽车销售商,每个人都应该输入他们售出的汽车数量。在输入的下方,他们的名字应该打印出来,并且与他们销售的汽车的行号相同(来自输入),但不能用数字,使用X或星号*。x或星形表示该数字输入。 这是到目前为止我的代码。我被困在打印X或星星旁边的名字。它打印在错误的名字旁边。有没有办法只使用循环而不使用数组

 import java.io.*;
 public class BarGraphCarSold {

public static void main(String[] args)throws IOException {
    BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));

    System.out.print("Enter no of cars Bob sold >> ");
    int bobSold = Integer.parseInt(buf.readLine());
    System.out.print("Enter no of cars Pam sold >> ");
    int pamSold = Integer.parseInt(buf.readLine());
    System.out.print("Enter no of cars John sold >> ");
    int johnSold = Integer.parseInt(buf.readLine());
    System.out.print("Enter no of cars Kim sold >> ");
    int kimSold = Integer.parseInt(buf.readLine());
    System.out.println();
    System.out.println("Car Sales for Month");


    System.out.print("Bob  \n");
    System.out.print("Pam  \n");
    System.out.print("John  \n");
    System.out.print("Kim  ");

    for(int i = 1; i<=bobSold;i++){
        System.out.print("X");
     }  
   }
 }

OUTPUT
Enter no of cars Bob sold >> 5
Enter no of cars Pam sold >> 7
Enter no of cars John sold >> 4
Enter no of cars Kim sold >> 6

Car Sales for Month
Bob  
Pam  
John  
Kim  XXXXX

共 (2) 个答案

  1. # 1 楼答案

    你很接近

    试试这样的

    System.out.print("Bob ");
    for(int i = 0; i < bobSold; i++){
        System.out.print("X");
    }
    System.out.print("\n");
    

    您正在打印每个名称,然后有换行符(\n),然后尝试打印X。因此,您需要先打印名称,然后打印X,然后打印新行。对于要用X打印出来的每个名称,都需要这样的循环

    有很多不同的方法可以做到这一点。你可以有一个带有名字的String,然后循环并将X添加到string,然后一次性打印出来

    String dealer = "Bob ";
    for(int i = 0; i < bobSold; i++){
        dealer += "X";
    }
    dealer += "\n";
    System.out.print(dealer);
    

    使用数组

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    
    public class Main {
        public static void main(String[] args) {
            BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
            String[] dealers = {"Bob","Pam","John","Kim"};
            int[] sales = new int[4];
    
            try {
                for(int i=0; i < dealers.length; i++){
                    System.out.print("Enter number of cars "+dealers[i]+" sold: ");
                    sales[i] = Integer.parseInt(buf.readLine());
                }
            }catch(IOException e){
                System.err.println("Error Reading input");
                System.err.println(e.getMessage());
            }
            System.out.println();
            System.out.println("Car Sales for Month");
    
            for(int i = 0; i < dealers.length; i++) {
                System.out.print(dealers[i]+" ");
                for(int j = 0; j < sales[i]; j++) {
                    if(j == (sales[i]-1)) {
                        System.out.println("X");
                    }else {
                        System.out.print("X");
                    }
                }
            }
        }
    }
    

    玩得开心。继续

  2. # 2 楼答案

    你需要为每个人打印X

    System.out.print("Bob - ");
    for(int i = 1; i<=bobSold;i++){
        System.out.print("X");
     }
    System.out.print("\nPam - ");
    for(int i = 1; i<=pamSold;i++){
        System.out.print("X");
     }
    System.out.print("\nSame - ");
    for(int i = 1; i<=samSold;i++){
        System.out.print("X");
     }
    System.out.print("\nKim - ");
    for(int i = 1; i<=kimSold;i++){
        System.out.print("X");
     }