Java 查找当前索引并打印数组中的下一条记录
我有一个程序,有5个按钮。该按钮用于从数组中查找第一条、最后一条、下一条和上一条记录。 我已经做了第一个和最后一个记录,但我有a=n混乱,无法从数组中找到下一个和上一个记录Java 查找当前索引并打印数组中的下一条记录,java,arrays,Java,Arrays,我有一个程序,有5个按钮。该按钮用于从数组中查找第一条、最后一条、下一条和上一条记录。 我已经做了第一个和最后一个记录,但我有a=n混乱,无法从数组中找到下一个和上一个记录 public void fn(字符串s2) { 尝试 { BufferedReader br=新的BufferedReader(新文件阅读器(“Student.txt”); 字符串s=br.readLine(); Book[]b=Book.StringToObj(s); 如果(s2.等于(“读取数据”)) { l5.setT
public void fn(字符串s2)
{
尝试
{
BufferedReader br=新的BufferedReader(新文件阅读器(“Student.txt”);
字符串s=br.readLine();
Book[]b=Book.StringToObj(s);
如果(s2.等于(“读取数据”))
{
l5.setText(String.valueOf(b[0].id));
l6.setText(String.valueOf(b[0].title));
l7.setText(String.valueOf(b[0].price));
l8.setText(String.valueOf(b[0].auth));
}
如果(s2.等于(“”)
{
如果(l5.getText().equals(String.valueOf(b[b.length-1].id))&&l6.getText().equals(String.valueOf(b[b.length-1].title))&&l7.getText().equals(String.valueOf(b[b.length-1].price))&&l8.getText().equals(String.valueOf(b[b.length-1].auth)))
{
showMessageDialog(这是“您已经在最后一条记录中”);
}
其他的
{
l5.setText(String.valueOf(b[b.length-1].id));
l6.setText(String.valueOf(b[b.length-1].title));
l7.setText(String.valueOf(b[b.length-1].price));
l8.setText(String.valueOf(b[b.length-1].auth));
}
}
如果(s2.等于(“”)
{
}
}
捕获(例外e)
{
}
}
当我点击“>”按钮时,我想从数组中得到下一条记录。
我该怎么办 为什么不将当前页面存储在变量(如
int
)中,然后使用它进行操作
大概是这样的:
int page = 0;
Book[] books;
public void init()
{
BufferedReader br = new BufferedReader(new FileReader("Student.txt"));
String s = br.readLine();
books = Book.StringToObj(s);
}
public void show()
{
l5.setText(String.valueOf(books[page].id));
l6.setText(String.valueOf(books[page].title));
l7.setText(String.valueOf(books[page].price));
l8.setText(String.valueOf(books[page].auth));
}
public void fn(String s2)
{
try
{
if(s2.equals("Read Data"))
{
show();
}
if(s2.equals("<<"))
{
if (page == 0)
{
JOptionPane.showMessageDialog(this,"You are already at First Record");
}
else
{
page = 0;
show();
}
}
if(s2.equals(">>"))
{
if (page == books.length - 1)
{
JOptionPane.showMessageDialog(this,"You are already at Last Record");
}
else
{
page = books.length-1;
show();
}
}
if(s2.equals("<"))
{
if (page == 0)
{
JOptionPane.showMessageDialog(this,"This is a First Record, Previous Record is Not Available");
}
else
{
page--;
show();
}
}
if(s2.equals(">"))
{
if (page == books.length - 1)
{
JOptionPane.showMessageDialog(this,"You are already at Last Record");
}
else
{
page++;
show();
}
}
}
catch(Exception e)
{
}
}
int page=0;
书籍[]书籍;
公共void init()
{
BufferedReader br=新的BufferedReader(新文件阅读器(“Student.txt”);
字符串s=br.readLine();
books=Book.StringToObj(s);
}
公开展览(
{
l5.setText(String.valueOf(books[page].id));
l6.setText(String.valueOf(books[page].title));
l7.setText(String.valueOf(books[page].price));
l8.setText(String.valueOf(books[page].auth));
}
公共无效fn(字符串s2)
{
尝试
{
如果(s2.等于(“读取数据”))
{
show();
}
如果(s2.等于(“”)
{
if(page==books.length-1)
{
showMessageDialog(这是“您已经在最后一条记录中”);
}
其他的
{
页面=书籍。长度-1;
show();
}
}
如果(s2.等于(“”)
{
if(page==books.length-1)
{
showMessageDialog(这是“您已经在最后一条记录中”);
}
其他的
{
page++;
show();
}
}
}
捕获(例外e)
{
}
}
请注意,我也将
书籍
移动到了全局范围,因为没有必要每次都再次读取该文件。为什么不将当前页面存储在一个变量(如int
)中,然后使用它进行操作
大概是这样的:
int page = 0;
Book[] books;
public void init()
{
BufferedReader br = new BufferedReader(new FileReader("Student.txt"));
String s = br.readLine();
books = Book.StringToObj(s);
}
public void show()
{
l5.setText(String.valueOf(books[page].id));
l6.setText(String.valueOf(books[page].title));
l7.setText(String.valueOf(books[page].price));
l8.setText(String.valueOf(books[page].auth));
}
public void fn(String s2)
{
try
{
if(s2.equals("Read Data"))
{
show();
}
if(s2.equals("<<"))
{
if (page == 0)
{
JOptionPane.showMessageDialog(this,"You are already at First Record");
}
else
{
page = 0;
show();
}
}
if(s2.equals(">>"))
{
if (page == books.length - 1)
{
JOptionPane.showMessageDialog(this,"You are already at Last Record");
}
else
{
page = books.length-1;
show();
}
}
if(s2.equals("<"))
{
if (page == 0)
{
JOptionPane.showMessageDialog(this,"This is a First Record, Previous Record is Not Available");
}
else
{
page--;
show();
}
}
if(s2.equals(">"))
{
if (page == books.length - 1)
{
JOptionPane.showMessageDialog(this,"You are already at Last Record");
}
else
{
page++;
show();
}
}
}
catch(Exception e)
{
}
}
int page=0;
书籍[]书籍;
公共void init()
{
BufferedReader br=新的BufferedReader(新文件阅读器(“Student.txt”);
字符串s=br.readLine();
books=Book.StringToObj(s);
}
公开展览(
{
l5.setText(String.valueOf(books[page].id));
l6.setText(String.valueOf(books[page].title));
l7.setText(String.valueOf(books[page].price));
l8.setText(String.valueOf(books[page].auth));
}
公共无效fn(字符串s2)
{
尝试
{
如果(s2.等于(“读取数据”))
{
show();
}
如果(s2.等于(“”)
{
if(page==books.length-1)
{
showMessageDialog(这是“您已经在最后一条记录中”);
}
其他的
{
页面=书籍。长度-1;
show();
}
}
如果(s2.等于(“”)
{
if(page==books.length-1)
{
showMessageDialog(这是“您已经在最后一条记录中”);
}
其他的
{
page++;
show();
}
}
}
捕获(例外e)
{
}
}
请注意,我也将
书籍
移动到了全局范围,因为每次都再次读取文件是没有意义的。您需要设置一个全局变量。使用此变量作为索引从数组中获取值。最初这将是一个,显示数组中的第一个元素。单击“最后一次”时,也要更改变量值。单击“下一步”或“上一步”时,只需增加或减少变量的值,并在该位置显示数组元素 您需要设置一个全局变量。使用此变量作为索引从数组中获取值。最初这将是一个,显示数组中的第一个元素。单击“最后一次”时,也要更改变量值。单击“下一步”或“上一步”时,只需增加或减少变量的值,并在该位置显示数组元素 我得到一个错误:线程“main”java.lang中出现异常。NullPointerException@HardikLakhani我只提供了这个代码作为示例。它可能在您的程序中不起作用,您必须修改它。找到错误的原因并处理:)我在线程“main”java.lang中遇到了一个错误:异常。NullPointerException@HardikLakhani我只提供了这个代码作为示例。它可能在您的程序中不起作用,您必须修改它。找到错误的原因并处理它:)