【问题标题】:What is the simplest but most effective way in formatting strings into a chart in Java?在Java中将字符串格式化为图表最简单但最有效的方法是什么?
【发布时间】:2016-05-15 04:36:32
【问题描述】:

对于我的程序,我需要以类似图表的格式显示商品描述、数量和价格。所以这意味着项目 1 的描述将与其价格和数量一致。到目前为止,我已经尝试了几种我在互联网上找到的方法,但都没有成功。我正在使用 Dr. Java,所以请提出与该编译器兼容的建议。 提前谢谢!

这是我目前所拥有的:

public static void main(String []args){
  Scanner input=new Scanner(System.in);
  String sentinel = "End";

   String description[] = new String[100];

   int quantity[] = new int[100];

   double price [] = new double[100];
   int i = 0;
   // do loop to get input from user until user enters sentinel to terminate data entry
   do
   {
     System.out.println("Enter the Product Description or " + sentinel + " to stop");
     description[i] = input.next();

     // If user input is not the sentinal then get the quantity and price and increase the index
     if (!(description[i].equalsIgnoreCase(sentinel))) {
       System.out.println("Enter the Quantity");
       quantity[i] = input.nextInt();
       System.out.println("Enter the Product Price ");
       price[i] = input.nextDouble();
     }
     i++;
   } while (!(description[i-1].equalsIgnoreCase(sentinel)));


  // companyArt();
   //System.out.print(invoiceDate());
   //System.out.println(randNum());



   System.out.println("Item Description: ");
   System.out.println("-------------------");
   for(int a = 0; a <description.length; a++){
     if(description[a]!=null){
      System.out.println(description[a]);
   }
 }  
   System.out.println("-------------------\n");


   System.out.println("Quantity:");
   System.out.println("-------------------");
   for(int b = 0; b <quantity.length; b++){
     if(quantity[b]!=0){
       System.out.println(quantity[b]);
     }
   } 
   System.out.println("-------------------\n");

   System.out.println("Price:");
   System.out.println("-------------------");
   for(int c = 0; c <price.length; c++){
     if(price[c]!=0){
       System.out.println("$"+price[c]);
     }
   } 
   System.out.println("-------------------");

   //This is where I multiply the price and quantity together to get the total
   double total = 0.0;
   for (int j = 0; j < quantity.length; j++){

     total += quantity[j] * price[j];
   }

   if(total != 0){
     System.out.println("Total: " + total);
   }       
  }
 }

【问题讨论】:

  • 使用格式化程序 :)
  • “我正在使用 Dr. Java,所以请推荐与该编译器兼容的东西。” - 编译器无关紧要。
  • 你能举一个你想要的输出的例子吗?我们可以尝试猜测,但我们为什么要猜测。您需要我们的帮助,所以请具体说明您的需要。以及您遇到问题的部分。
  • “到目前为止,我已经尝试了几种在网上找到的方法,但都没有成功。” - 请说明您遇到的问题。这个问题离“太宽泛”不远了。

标签: java string formatting output


【解决方案1】:

您的代码会打印出商品描述列表、数量列表和价格列表。我假设这不是你想要的样子。最好的解决方案是使用单个for 循环,每行打印出这三件事。以下代码打印出一个表格,其中包含标记为“项目描述”、“数量”和“价格”的三列,每一行代表一个项目,虚线分隔每一行:

System.out.println("Item Description:\tQuantity:\tPrice:\t");
System.out.println("---------------------------------------------------------");
for(int a = 0; a <description.length; a++){
    if (description[a].equalsIgnoreCase("end")) {
        break;
    }
    System.out.println(description[a] + "\t\t" + quantity[a] + "\t\t" + price[a]);
    System.out.println("---------------------------------------------------------\n");
}  

输出格式如下:

Item Description:   Quantity:   Price:  
---------------------------------------------------------
asdfaoiew;rjlkf     248         4309.0
---------------------------------------------------------

asodifaasd          43          2323.0
---------------------------------------------------------

asdfasoif           234         2.0
---------------------------------------------------------

如果列没有正确排列,您需要在描述后添加或删除一个“\t”,具体取决于您的项目描述的长短。

【讨论】:

    猜你喜欢
    • 2013-07-11
    • 2023-03-20
    • 2010-09-16
    • 2010-10-25
    • 2013-03-08
    • 2011-11-13
    • 2012-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多