Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 查找当前索引并打印数组中的下一条记录_Java_Arrays - Fatal编程技术网

Java 查找当前索引并打印数组中的下一条记录

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

我有一个程序,有5个按钮。该按钮用于从数组中查找第一条、最后一条、下一条和上一条记录。 我已经做了第一个和最后一个记录,但我有a=n混乱,无法从数组中找到下一个和上一个记录

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我只提供了这个代码作为示例。它可能在您的程序中不起作用,您必须修改它。找到错误的原因并处理它:)