这部分代码在不使用数组或arraylists时工作正常。
// other stuffs
router.get('/login', function(req, res, next) {
res.render('login', {
title: 'Login'
})
});
router.post('/login', passport.authenticate('local-login', {
failureRedirect: '/users/login',
failureFlash: 'Invalid username or password'
}),
function(req, res) {
console.log('Authentication Sucessful');
req.flash('success', 'You have logged in');
res.redirect('/');
});
module.exports = router;
这部分代码在不使用数组或arraylists时工作正常
import javax.swing.*;
public class GUI
{
public static void main(String[] args) {
JFrame frame = new JFrame("01");
frame.getContentPane().add(new Panel());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setResizable(false);
frame.setVisible(true);
}
}
在这个类中,如果我不使用数组或arraylists,它运行正常,但我无法使用它们。
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Panel extends JPanel
{
private Shapes shapes;
public Panel () {
setFocusable(true);
requestFocusInWindow();
setPreferredSize(new Dimension(500,500));
}
public void paintComponent(Graphics gc) {
super.paintComponent(gc);
shapes.draw(gc);
}
}
答案 0 :(得分:1)
$_ID
中的 NullPointerException
因为Panel#paintComponent
未初始化...
shapes
public class Panel extends JPanel {
private Shapes shapes;
public Panel() {
shapes = new Shapes();
中的{p> NullPointerException
因为Shapes#popBlocks
未初始化
arr
但等等,那只画一个形状?!所有这一切都是使用一些新值更新public class Shapes
{
//...
int[] arr = new int[4];
//...
的实例并将其添加到arr
blocks
List
这意味着您有5个块,其值为private void popBlocks(int a, int b, int c, int d) {
arr[0] = a;
arr[1] = b;
arr[2] = c;
arr[3] = d;
blocks.add(arr);
}
。
您应该将900,100,150,30
作为方法级字段,而不是使用实例字段,例如......
arr
此外,public class Shapes
{
//...
//int[] arr;
//...
private void popBlocks(int a, int b, int c, int d) {
int[] arr = new int[4];
arr[0] = a;
arr[1] = b;
arr[2] = c;
arr[3] = d;
blocks.add(arr);
}
}
方法中的for-loop
错误,应该从draw
循环,而不是0-size - 1
,例如
0-size - 2
答案 1 :(得分:0)
for(int i=0; i<blocks.size()-1; i++){
for循环上的条件错误应为
for(int i=0; i<=blocks.size()-1; i++) .
or
for(int i=0; i<blocks.size(); i++)
你可能想试试这个。