当前位置: 首页 > 知识库问答 >
问题:

为什么我得到空指针异常,即使有值显示时println?

艾和通
2023-03-14

这是类a的一个函数,我将我的值传递给一个类名,并确认它的寄存器函数。

private void registerOrder() {
    confirm.register(id);
}

这是课堂确认。在这门课上,我计划在服务器内部发布数据。url中没有错误。我已经打印了这个代码“System.out.println”(“wei”getPostDataString(postDataParams))我得到了我的价值。但系统显示为空指针。代码的其他部分有错误吗?

 public class confirm {
 private static final String REGISTER_URL = 
 "http://192.168.43.214/apexStore2/confirm.php";

 public static void register(String id) {
    class RegisterUser extends AsyncTask<String, Void, String> {
        ProgressDialog loading;
 @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            loading.dismiss();
        }
  @Override
        protected String doInBackground(String... params) {

            HashMap<String, String> data = new HashMap<>();
            data.put("product_id",params[0]);

            String result = sendPost(REGISTER_URL,data);

            return  result;
        }
    }

    RegisterUser ru = new RegisterUser();
    ru.execute(String.valueOf(id));
 }
 public static String sendPost(String requestURL,
                              HashMap<String, String> postDataParams) {

    URL url;
    String response = " ";
    try {
        url = new URL(requestURL);

        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("POST");
        conn.setRequestProperty("Content-Type",
                "application/x-www-form-urlencoded");
        conn.setRequestProperty("Content-Length", "" +                       
  Integer.toString(getPostDataString(postDataParams).getBytes().length));
        conn.setRequestProperty("Content-Language", "en-US");
        conn.setReadTimeout(15000);
        conn.setConnectTimeout(15000);
        conn.setDoInput(true);
        conn.setDoOutput(true);


        OutputStream os = conn.getOutputStream();
        BufferedWriter writer = new BufferedWriter(
                new OutputStreamWriter(os, "UTF-8"));
        writer.write(getPostDataString(postDataParams));
        System.out.println("wei" + getPostDataString(postDataParams));

        writer.flush();
        writer.close();
        os.close();
        int responseCode=conn.getResponseCode();

        if (responseCode == HttpsURLConnection.HTTP_OK) {
            BufferedReader br=new BufferedReader(new 
   InputStreamReader(conn.getInputStream()));
            response = br.readLine();
        }
        else {
            response="Error Registering";
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

    return response;
}

private static String getPostDataString(HashMap<String, String> params) 
throws UnsupportedEncodingException {
    StringBuilder result = new StringBuilder();
    boolean first = true;
    for(Map.Entry<String, String> entry : params.entrySet()){
        if (first)
            first = false;
        else
            result.append("&");

        result.append(URLEncoder.encode(entry.getKey(), "UTF-8"));
        result.append("=");
        result.append(URLEncoder.encode(entry.getValue(), "UTF-8"));
    }

    return result.toString();
}
}

共有2个答案

戚翼
2023-03-14

读取代码时,如果调用confirm,则会出现空指针异常。寄存器(id)

如果要以静态方式使用类,则需要将其声明为最终类:

public final class confirm {...}

对你来说,这应该管用。不过,您也可以通过创建类的实例来解决问题,而无需使用最终标识符:

confirm conf = new confirm();
conf.register(id);

我还看到你的班名以小写字母开头。建议创建以大写字母开头的类名。

如果它不能解决你的错误,请在这里填写错误信息。

陆飞捷
2023-03-14

您有一个实例变量,它从未分配给:

ProgressDialog loading;

它被用于

protected void onPostExecute(String s) {
    super.onPostExecute(s);
    loading.dismiss();     // expect NPE
}
 类似资料:
  • 在以下代码中,我得到了一个Java·朗空指针异常: 它发生在最后一个if语句中。我使用了日志文件:fragen.size()是30,它在I=1时崩溃 这对我来说毫无意义 请帮助;)

  • 我有一个3节点星火集群。并尝试使用snowflake spark连接器和jdbc驱动程序访问snowflake jdbc:snowflake-jdbc-3.12.4.jar spark-connector:spark-snowflake_2.11-2.7.0-spark_2.4.jar 下面是我的代码: 我在sdf.show()上的调用失败,但有以下例外情况。有什么建议吗?

  • 这个问题很明显,但仍然没有人帮我解决。我正在使用一个需要通过数组适配器填充字符串的旋转器。但是在运行应用程序时,发生了< code >空指针异常。我还声明了spinner和< code>ArrayAdapter 这是我的代码: 在onCreate中:

  • 问题内容: 有可能这可能是一个双重问题。我将String变量初始化为null。我可能会或可能不会使用一个值更新它。现在我想检查此变量是否不等于null以及我尝试执行的操作是否会得到null指针异常。空指针异常,因为它代价高昂。是否有任何有效的解决方法.TIA 问题答案: 如果您使用 你 不会 得到。 我怀疑你在做什么: 这是因为null 而引发,而不是因为null。 如果仍然无法解释,请发布您用于

  • 我已经更新了我的项目中的一些依赖关系之后,我的Hibernate配置类显示Nullpointerx的。 我将SpringDataJPA存储库与hibernate一起使用,已经超过24小时了,仍然没有找到任何关于小问题的适当解决方案。 我已经尝试过的一些解决方案:- 使用@bean(name=“entityManagerFactory”)提供bean名称 我面临的问题 波姆。xml文件 配置类 db

  • 当我试图从DB查询结果时,我得到一个空指针异常。以下是错误: 这是错误产生的函数。 如果我启动应用程序信息服务(=new ApplicationInfoService()),我会得到一个指向我的服务类的空指针错误,在这里进行查询 错误转到createQuery行,如果我打印出EntityManager,它将返回“null”。为什么我的Entitymanager不能初始化。我在我的登录系统中使用了几