Банкомат с использованием структуры данных ищет массив классов клиентов и сохраняет его в строителе строк - PullRequest
0 голосов
/ 18 февраля 2019

я создаю банкомат и храню данные клиентов в arraylist.Я искал данные клиента и сохранял их в строителе строк для ожидаемого вывода.

public void search() {
          String s1 = "",result="",
                 s2 = "";
                s1 = JOptionPane.showInputDialog("Enter Account Number u want to find ", s2);
                boolean found = false;
                StringBuilder builder=new StringBuilder();
                builder.append("Account Number\tName\t\tPincode\tUser Login\t\tBalance\t\tStatus\t\tType");
                for (int i = 0; i < user.size(); i++) {
                    Customer_Data var = user.get(i);
                    if (var.accountNum == Integer.parseInt(s1)) 
                    {                                  builder.append("\n"+var.accountNum+"\t\t"+var.name+"\t\t"+var.pincode+"\t\t"+var.login+"\t\t"+var.startingBalance+"\t\t"+var.status+"\t\t"+var.type);
                        result=builder.toString();
                        //JOptionPane.showMessageDialog(null,result, "sad", JOptionPane.PLAIN_MESSAGE);
                        found = true;
                    }
                }
                if(found)
                {
                    JOptionPane.showMessageDialog(null,builder, "sad", JOptionPane.PLAIN_MESSAGE);
                }
                if (!found) {
                    JOptionPane.showMessageDialog(null, "Not Fount");
                }


    }

Как я могу получить пробелы \ n в строителе строк.Я ожидаю, что вывод массива класса клиента будет таким, как этот

AccountID UserID Holders Name Type    Balance  Status
15        44045   xyz        Savings   80,000  Active
18        43075   abc        Savings   80,000  Active

, но фактический вывод будет

AccountIDUserIDHoldersNameTypeBalanceStatus
154404xyzSavings80,000Active
1843075abcSavings80,000Active

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

Если вы хотите отображать данные в табличной форме в диалоговом окне, вы можете использовать JTable для этого.Это аккуратный и надежный способ сделать это.Попробуйте приведенный ниже пример и посмотрите.

import javax.swing.*;
import java.util.ArrayList;
import java.util.List;

public class TableInDialog {

  private List<Customer_Data> user;

  public TableInDialog() {
    // Sample data
    user = new ArrayList<>();
    user.add(new Customer_Data(15, "xyz", 44045, "login1", 80000, "Active", "Savings"));
    user.add(new Customer_Data(18, "abc", 43075, "login2", 80000, "Active", "Savings"));
  }

  public static void main(String[] args) {
    new TableInDialog().search();
  }

  public void search() {
    String s1 = "", s2 = "";
    s1 = JOptionPane.showInputDialog("Enter Account Number u want to find ", s2);

    String[] columns = new String[] {"Account Number", "Name", "Pincode",
        "User Login", "Balance", "Status", "Type"};
    Object[][] rows = new Object[1][columns.length];

    boolean found = false;
    for (int i = 0; i < user.size(); i++) {
      Customer_Data var = user.get(i);
      if (var.accountNum == Integer.parseInt(s1))
      {
        rows[0] = new Object[] {var.accountNum, var.name, var.pincode,
            var.login, var.startingBalance, var.status, var.type};
        found = true;
        break;
      }
    }

    if (found) {
      JOptionPane.showMessageDialog(null,new JScrollPane(new JTable(rows, columns)),
          "sad", JOptionPane.PLAIN_MESSAGE);
    }
    else {
      JOptionPane.showMessageDialog(null, "Not Fount");
    }
  }
}

class Customer_Data {
  int accountNum;
  String name;
  int pincode;
  String login;
  int startingBalance;
  String status;
  String type;

  public Customer_Data(int accountNum, String name, int pincode, String login,
                       int startingBalance, String status, String type) {
    this.accountNum = accountNum;
    this.name = name;
    this.pincode = pincode;
    this.login = login;
    this.startingBalance = startingBalance;
    this.status = status;
    this.type = type;
  }
}

Результирующий диалог выглядит примерно так:

enter image description here

0 голосов
/ 18 февраля 2019

Вам нужно будет внести некоторые изменения, чтобы сделать эту работу.Шаги, которые вы должны выполнить, следующие:

  1. Используйте JLabel в методе JOptionPane#showMessageDialog(), таким образом вы можете добавить в свой текст вкладки.
  2. Использовать <html> и <pre> отмечают начало текста JLabel.('\ t' будет распознано.)
  3. (Необязательно) Используйте StringBuilder, как следует.Не добавляйте весь текст в строку.Разделите его на несколько, но более читаемых строк.

Простой пример:

StringBuilder sb = new StringBuilder();
sb.append("Hello");
sb.append(TAB);
sb.append("Stack");
sb.append(SPACE);
sb.append("Overflow");
JLabel label = new JLabel("<html><pre>" + sb.toString());
JOptionPane.showMessageDialog(null, label, "sad", JOptionPane.PLAIN_MESSAGE);

, где TAB и SPACE:

private static final char TAB = '\t';
private static final char SPACE = ' ';

Предварительный просмотр:

enter image description here

...