جافا: طباعة مجموعة 2D سلسلة كجدول بزر الماوس الأيمن مبرر

StackOverflow https://stackoverflow.com/questions/275338

  •  07-07-2019
  •  | 
  •  

سؤال

ما هي <م> أفضل طريقة لطباعة خلايا مجموعة String[][] كجدول بزر الماوس الأيمن له ما يبرره؟ على سبيل المثال، وإدخال

{ { "x", "xxx" }, { "yyy", "y" }, { "zz", "zz" } }

وينبغي أن تسفر إخراج

  x xxx
yyy   y
 zz  zz

وهذا يبدو وكأنه شيء واحد <م> يجب تكون قادرة على القيام بها باستخدام java.util.Formatter، ولكن لا يبدو للسماح بعرض حقل غير ثابتة. إن أفضل إجابة استخدام بعض الطرق القياسية لحشوة خلايا الجدول، وليس الإدراج اليدوي من الشخصيات الفضاء.

هل كانت مفيدة؟

المحلول

في الواقع، إذا قمت بتحديد عرض للحقول، ينبغي أن يكون بزر الماوس الأيمن يبرره.
إذا كنت بحاجة إلى الحشو الديناميكي، والحد الأدنى لأطول سلسلة، عليك أن تسير مجموعة، والحصول على عرض القصوى، وتوليد سلسلة التنسيق مع عرض حسابها من هذا ماكسيما، واستخدامه لتنسيق الإخراج.

نصائح أخرى

وهنا جوابا، وذلك باستخدام سلاسل التنسيق ديناميكيا لكل عمود:

public static void printTable(String[][] table) {
  // Find out what the maximum number of columns is in any row
  int maxColumns = 0;
  for (int i = 0; i < table.length; i++) {
    maxColumns = Math.max(table[i].length, maxColumns);
  }

  // Find the maximum length of a string in each column
  int[] lengths = new int[maxColumns];
  for (int i = 0; i < table.length; i++) {
    for (int j = 0; j < table[i].length; j++) {
      lengths[j] = Math.max(table[i][j].length(), lengths[j]);
    }
  }

  // Generate a format string for each column
  String[] formats = new String[lengths.length];
  for (int i = 0; i < lengths.length; i++) {
   formats[i] = "%1$" + lengths[i] + "s" 
       + (i + 1 == lengths.length ? "\n" : " ");
 }

  // Print 'em out
  for (int i = 0; i < table.length; i++) {
    for (int j = 0; j < table[i].length; j++) {
      System.out.printf(formats[j], table[i][j]);
    }
  }
}

والعثور على طول أطول سلسلة ..
غادر وسادة كل السلاسل مع مسافات حتى ص أن طول + 1
System.out.print لهم باستخدام 2 متداخلة لحلقات

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top