Notice: Undefined index: in /data/phpspider/phplib/misc.function.php on line 226
Java 创建具有列标题的表并排列值_Java_Alignment - Fatal编程技术网

Java 创建具有列标题的表并排列值

Java 创建具有列标题的表并排列值,java,alignment,Java,Alignment,我试图打印出一个表,而不使用JTable或任何其他表函数(就像文本一样)。到目前为止,我能够打印出这些值,但似乎无法使它们正确对齐。我正在尝试使用选项卡,但有些值比其他值长,这使得它很难使用。任何提示都将不胜感激 package costisnoobjectfinalproject; import java.text.NumberFormat; import java.util.Scanner; public class CostIsNoObjectFinalProject { p

我试图打印出一个表,而不使用JTable或任何其他表函数(就像文本一样)。到目前为止,我能够打印出这些值,但似乎无法使它们正确对齐。我正在尝试使用选项卡,但有些值比其他值长,这使得它很难使用。任何提示都将不胜感激

package costisnoobjectfinalproject;

import java.text.NumberFormat;
import java.util.Scanner;

public class CostIsNoObjectFinalProject {

    public static void main(String[] args) {

        String customerName;
        String carCode;
        int numOfDays;
        Scanner response = new Scanner(System.in);
        NumberFormat money = NumberFormat.getCurrencyInstance();

        String[] columnHeaders = {"Description", "Daily Fee", "Code"};
        String[] cars = {"1967 Ford Mustang", "1922 Ford Model T", "2008 Lincoln Continental", "2002 Lexus", "2007 BMW", "1910 Mercer Runabout", "2009 Mercedes Benz", "1930 Cadillac V-16"};
        double[] dailyFee = {65.0, 95.0, 135.0, 140.0, 160.0, 165.0, 200.0, 205.0};
        String[] carType = {"A", "A", "L", "L", "L", "A", "L", "A"};
        boolean[] alreadyRented = {false, false, false, false, false, false, false, false};

        System.out.println("Welcome to the Antique/Luxury Car Lot! First, let's start with some information.");
        System.out.println("Please enter your name: ");
            customerName = response.nextLine();
        System.out.println("Thank you. Which kind of car would you like to rent? (L for luxury, A for Antique): ");
            carCode = response.nextLine();
        System.out.println("How many days did you want to rent this car?: ");
            numOfDays = response.nextInt();

        for(int count = 0; count < cars.length ; count++) {
            System.out.println(cars[count] + "\t\t" + money.format(dailyFee[count]) + "\t" + carType[count] + "\t" + alreadyRented[count]);
        } //end for
    } // end main

} // end class

out out(输出)中的选项卡导致列未对齐。较长的文本值将下一列推到后面的制表位

我通常做的是:

  • 查找每列中字符最多的字符串
  • 用足够的空格填充每个字符串,以匹配其各自列(包括标题行字符串)的最大字符数
  • 一旦所有填充到相同的长度,打印行和星星,er列将对齐
  • 填充将取代制表符,如果愿意,您可以仅用一个字符分隔列

    在字符串末尾左对齐填充栏,右对齐填充栏的开头,在开头和结尾之间居中拆分填充栏


    要打印填充的标题,只需在进入for循环之前使用与循环中相同的格式字符串进行打印即可

    请记住,我仍然不确定如何打印columnHeaders数组,例如:Description Daily Fee Code Rental Status if you play with tabs(\t)您应该能够获得特定样本数据的对齐方式。由于我循环\t选项卡代码,它将始终处于关闭状态,因为描述的长度不同。另一个选项是使用,但您仍然需要知道字段的最大宽度。您能否更深入地了解我如何使用printf()?
    1967 Ford Mustang       $65.00  A   false
    1922 Ford Model T       $95.00  A   false
    2008 Lincoln Continental        $135.00 L   false
    2002 Lexus      $140.00 L   false
    2007 BMW        $160.00 L   false
    1910 Mercer Runabout        $165.00 A   false
    2009 Mercedes Benz      $200.00 L   false
    1930 Cadillac V-16      $205.00 A   false