如何多次打印存储在if语句中的数据?

时间:2015-03-12 14:32:41

标签: java

那么如何在每次显示之前将数据存储在变量中进行存储。

我有一个将数据设置为数组的for循环语句。

然后我在for循环语句中创建一个if语句来检查它是否匹配,然后将输入的数据存储在一个变量中并在最后显示它。我会给你一个示例代码

public static void main (String [] args)
{
    TestClass [] emp = new testclass [3];

    String name, id, nickname;
    int sameName = 0;

    for (int i = 0; i < 3; i++)
    {
        emp[i] = new testclass();

        name = JOptionPane.showInputDialog ("Your name");
        id = JOptionPane.showInputDialog ("Your ID");
        nickname = JOptionPane.showInputDialog ("Your Nickname");

        emp[i].setTestClass (name, id, nickname);

        System.out.println (emp[i]);

        if ("David".equalsIgnoreCase(emp[i].getName()) && "Dave".equalsIgnoreCase(emp[i].getNickname()))
        {
            sameName = i;
        }
    }

    System.out.println ("People with the same name and nickname : \n\n" + emp[sameName]) //Is this the correct way?
}

因此,当您注意到程序将首先显示所有3个输入时,

然后显示输出“具有相同名称和昵称的人”。

因此,假设有两个人姓名和昵称相同。

如何在显示所有3个输入后打印存储在最后的数据?

3 个答案:

答案 0 :(得分:1)

对于索引的单个变量,您无法做到这一点,因为可能有许多用户符合您的条件。有很多方法可以解决这个问题。最简单的是:

for 循环之前创建任何容器,例如

List<TestClass> matching = new ArrayList<TestClass>();

for 循环中,如果特定项目符合您的标准,只需将其添加到集合中:

matching.add(emp[i])

for 循环后,您可以引用与您的标准匹配的所有项目,因此您可以随意使用它们。只打印例如:

for(final TestClass item : matching) {
   System.out.println ("Another person matching was: " + item.getName());
}

最好的问候,

Darek

答案 1 :(得分:0)

您必须存储具有相同名称的indizes或类似内容。使用数组简化它就像这样:

boolean[] sameName = new boolean[emp.length];
...

// in the loop the if statement:
if ("David".equalsIgnoreCase(emp[i].getName()) && "Dave".equalsIgnoreCase(emp[i].getNickname()))
{
    sameName[i] = true;
}
else
{
    sameName[i] = false;
}    
...

// the output part:
System.out.println ("People with the same name and nickname : \n");
for (int i = 0; i < emp.length; i++) {
    if(sameName[i])
        System.out.println(emp[i]);
}

答案 2 :(得分:0)

您可以存储Dave / David副本的索引并打印出来。

快速而肮脏的方式可能是这个

String indexes = "";
for (int i = 0; i < 3; i++)
    {
        emp[i] = new testclass();

        name = JOptionPane.showInputDialog ("Your name");
        id = JOptionPane.showInputDialog ("Your ID");
        nickname = JOptionPane.showInputDialog ("Your Nickname");

        emp[i].setTestClass (name, id, nickname);

        System.out.println (emp[i]);

        if ("David".equalsIgnoreCase(emp[i].getName() && "Dave".equalsIgnoreCase(emp[i].getNickname()))
        {
            indexes += i.toString();
        }
    }
System.out.println ("People with the same name and nickname : \n");
for (int j = 0; j < indexes.length(); j+=1) {
    int index = Integer.parseInt( indexes.charAt(j) );
    System.out.println(emp[j]);
}