那么如何在每次显示之前将数据存储在变量中进行存储。
我有一个将数据设置为数组的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个输入后打印存储在最后的数据?
答案 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]);
}