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;
    }

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器