ATM 使用客户 class 的数据结构搜索数组列表并将其存储在字符串生成器中

ATM using data structure search arraylist of customer class and store it in string builder

我创建 ATM 并将客户数据存储在数组列表中。我搜索了客户数据并将其存储在 stringbuilder 中以获得预期输出。

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。 我希望客户 class 的 arraylist 的输出像这样

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

您必须进行一些更改才能完成这项工作。您应该遵循的步骤如下:

  1. JOptionPane#showMessageDialog() 方法中使用 JLabel,这样您就可以在文本中添加制表符。
  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 = ' ';

预览:

如果要在对话框中以表格形式显示数据,可以使用 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;
  }
}

结果对话框是这样的: