dongLinHome 2018-09-16 12:22 采纳率: 20%
浏览 1110

java.lang.NullPointerException

package cn.dl;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;

/**

  • @author n
    二维码玩玩
    */
    public class Qrcode {
    /
    *

    • @title:
    • @Description:二维码生成
    • @param content
    • @param imgPath */

    public static void getQrcodeImg(String content,String imgPath) {

    //实例化Qrcode对象
    Qrcode qrcode = new Qrcode();
    qrcode.setQrcodeErrorCorrect('M');
    qrcode.setQrcodeEncodeMode('B');
    qrcode.setQrcodeVersion(15);
    
    int width = 235;
    int height = 235;
    BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_BGR);
    Graphics2D gs = image.createGraphics();
    gs.setBackground(Color.white);
    gs.clearRect(0, 0, width, height);
    gs.setColor(Color.black);
    
    try {
        byte[] codeOut;
        codeOut = content.getBytes("utf-8");
    

    ** boolean[][] code = qrcode.calQrcode(codeOut);**
    for (int i = 0; i< code.length; i++) {
    for (int j = 0; j < code.length; j++) {
    if (code[j][i]) {
    gs.fillRect(j*3+2, i*3+2, 3, 3);

    }

    }

    }

        gs.dispose();
        image.flush();
        //保存
        ImageIO.write(image, "png", new File(imgPath));
        System.out.println("我的二维码在哪里");
    
    } catch (Exception e) {
        // TODO 自动生成的 catch 块
        e.printStackTrace();
    }
    

    }

    private boolean[][] calQrcode(byte[] codeOut) {
    // TODO 自动生成的方法存根
    return null;
    }

    private void setQrcodeVersion(int i) {
    // TODO 自动生成的方法存根

    }

    private void setQrcodeEncodeMode(char c) {
    // TODO 自动生成的方法存根

    }

    private void setQrcodeErrorCorrect(char c) {
    // TODO 自动生成的方法存根

    }

    public static void main(String[] args) {
    // TODO 自动生成的方法存根
    **getQrcodeImg("我爱我们","D:/Lin/JavaText/cn.dl/lin.png");
    **
    }

}

  • 写回答

1条回答 默认 最新

  • 2018-09-16 14:31
    关注

    最好把调用栈发出来,这样能准确知道null异常出现的代码位置
    main()函数中,代码改成这样,运行时就有栈信息了
    try{
    getQrcodeImg("我爱我们","D:/Lin/JavaText/cn.dl/lin.png");

    } catch(Exception ex){
    ex.pirntStackTrace();
    }

    从代码来看,大致应是如下代码的位置出了问题
    for (int i = 0; i< code.length; i++) {

    原因是这个函数返回的是null,code引用当然不能用了
    private boolean[][] calQrcode(byte[] codeOut) {
    // TODO 自动生成的方法存根
    return null;
    }

    评论

报告相同问题?

悬赏问题

  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了