关于java中NullPointerException,求帮忙——来自java菜鸟的呼声

问题描述

关于java中NullPointerException,求帮忙——来自java菜鸟的呼声

package test1;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Random;
import java.util.Set;

public class CountNumber //对数字进行计数并统计出每个数字出现的次数
{

public static void main(String[] args)
{
 Random random = new Random();
 HashMap  map = new HashMap();
 for(int i = 0; i < 50 ; i ++)  //随机生成50的数并以map类对象存储
 {
     int a = random.nextInt();
     if((Integer)a == null)     //如果该key指向null,说明未出现过,直接存入map中
     {
         map.put(a, new Integer(1));
     }
     else                       //否则出现过,将key对应的value值加1
     {
            //程序在这行报错   java.lang.NullPointerException
            map.put(a,new Integer((Integer)(map.get(a))).intValue() + 1);
     }
 }
 Set set = map.entrySet();
 for(Iterator itr =  set.iterator();itr.hasNext(); )
 {
     Map.Entry s = (Map.Entry)itr.next();
     String key = (String)s.getKey();
     String value = (String)s.getValue();
     System.out.print(key + " " + value);
 }
}

}

解决方案

if((Integer)a == null) //如果该key指向null,说明未出现过,直接存入map中
{
map.put(a, new Integer(1));
}

这里就压根不会进去~~~map中就没有值~~

解决方案二:

这个错误是空指针错误,我遇到了后,处理的办法是将map输出看看看里面有没有值

解决方案三:

map.put(a,new Integer((Integer)(map.get(a))).intValue() + 1);

map.get(a) 是根据key找值,没有key当然报空指针异常了。

解决方案四:

我的回答好像有错误,我发现我不能帮你解决问题了,空指针是为空,你需要找到哪里为空

解决方案五:

你要检查一下,是哪个地方时空指针,
可能路径不对

解决方案六:

public void xxx() {
    Map<Integer, Integer> countMap = new HashMap<Integer, Integer>();
    Random random = new Random();
    for (int i = 0; i < 50; i++) {
        int randomInt = random.nextInt(20);
        Integer oldValue = countMap.get(randomInt);
        countMap.put(randomInt, oldValue == null ? 1 : oldValue + 1);

    }
    for (Integer key : countMap.keySet()) {
        System.out.println("key:" + key + " count:" + countMap.get(key));
    }
}

自己对照看看,你的问题主要在MAP的操作上的。

解决方案七:

public static void main(String[] args) {
HashMap map = new HashMap();
for(int i=0;i<50;i++){
Integer count;
int a =new Random().nextInt(10);
count = map.get(a);
if(count==null){
map.put(a, 1);
}else map.put(a, count+1);
}
System.out.println(map);
}

第一,建议你随即的数有个范围,我给了[0,10),你没范围可能随即到相同的数吗?比卖彩票的几率都小的多
第二,KEY和VALUE都可以是null,根据hashmap的规则,KEY不能重复,你还能用KEY来判断是不是同一个数吗?
所以你要用VALUE来判断是不是同一个数,随即的数来作为KEY,放进来的次数作为VALUE,你同过get(key)可以的到key所对应的值,第一次到,那你在map里找不到,返回的就是null
第三,原谅我的啰嗦

解决方案八:

public static void main(String[] args) {
HashMap map = new HashMap();
for(int i=0;i<50;i++){
Integer count;
int a =new Random().nextInt(10);
count = map.get(a);
if(count==null){
map.put(a, 1);
}else map.put(a, count+1);
}
System.out.println(map);
}

第一,建议你随即的数有个范围,我给了[0,10),你没范围可能随即到相同的数吗?比卖彩票的几率都小的多
第二,KEY和VALUE都可以是null,根据hashmap的规则,KEY不能重复,你还能用KEY来判断是不是同一个数吗?
所以你要用VALUE来判断是不是同一个数,随即的数来作为KEY,放进来的次数作为VALUE,你同过get(key)可以的到key所对应的值,第一次到,那你在map里找不到,返回的就是null
第三,原谅我的啰嗦
时间: 2025-01-02 11:46:15

关于java中NullPointerException,求帮忙——来自java菜鸟的呼声的相关文章

java.lang.NullPointerException 求帮忙 。。。。。

问题描述 java.lang.NullPointerException 求帮忙 ..... 大神们给我看看为啥空指针吧 2015-05-25 16:20:32,830 ERROR [500.jsp] 72 - <> java.lang.NullPointerException at org.hibernate.hql.ast.util.SessionFactoryHelper.findSQLFunction(SessionFactoryHelper.java:365) at org.hiber

求帮忙求帮忙,java图书管理系统

问题描述 求帮忙求帮忙,java图书管理系统 java 设计一个具有数据插入.修改.删除.显示和查询功能的图书管理程序.设计要求用户登录功能: (2)设计程序运行界面: (3)能用菜单选择各功能.说明: (1)数据包括:书名.作者.书号.出版社.出版日期和单价 : (2)可对图书信息修改: (3)可增加或删除图书信息: (4)可显示所有保存的图书信息: (5)可按书名.作者.书号或出版社进行图书信息的查询. 解决方案 这个项目需要很多东西的,而且界面问题需要好好设计的,你可以慢慢编写,如果有什么

C中,(int)-0.5=-1,java中,(int)-0.5=0;java有没有类似算法

问题描述 C中,(int)-0.5=-1,java中,(int)-0.5=0;java有没有类似算法 C的这种方法的浮点整数映射上是线性的,java的方法在0附近将发生重叠,这样的话,在实数域处理问题要分类讨论,不方便. 方法好像有Math.floor(),不知道还有没有简单的表达式 解决方案 (int)-0.5=-1 这个才是科学的,因为int永远是找比自身小的最大整数. java需要判断 double d = -0.5; int r = d > 0? (int)d : (int)d - 1;

求帮忙,java中关于数组的组合

问题描述 String arrs={'D','S-X','D','S','C-Z','P'} 数组里的是"大厦的收藏品"的首字母,因为厦和藏都是多音字,现在要求把所有的首字母组合输出如:DSDSCP DXDSZP DXDSCP DSDSZP,一时想不到实现方法 希望给点思路,能上代码更好. 解决方案 import java.util.LinkedList; //采用广度优先遍历 public class BroadFirst { //用于存储遍历情况的列表 private Linked

java新手,求帮忙啊

问题描述 importjava.awt.*;importjava.awt.event.WindowAdapter;importjava.awt.event.WindowEvent;importjavax.swing.*;publicclassMyJava1{publicstaticvoidmain(String[]args){Tanktn=newTank();tn.lauchJFrame();}}classTankextendsJFrame{privatestaticfinallongseria

java中的方法的使用-java中类方法使用问题

问题描述 java中类方法使用问题 package lianxi;public class Xiangqi { protected String strName; protected int nAge;//年龄 protected int nSex;//性别 1表示男的 0表示女的 public Xiangqi(String name int ageint sex) { strName = name; nAge = age; nSex = sex; } public String getName

java-新人刚学Java,有个很纠结的点求帮忙解答

问题描述 新人刚学Java,有个很纠结的点求帮忙解答 JAVA 在定义一个类时候,在他的内部定义main方法, package com.pc; public class Person { private String name; private String job; private int age; public Person(String name, String job, int age){ this.name = name; this.job = job; this.age = age;

Java中构造函数File(String)未定义

问题描述 Java中构造函数File(String)未定义 package nmd; import java.io.*; public class FileHello { public static void main(String[] args) { try { Runtime ec=Runtime.getRuntime(); File file=new File("file.txt"); ec.exec(file.getAbsolutePath()); } catch (Excep

Java中泛型的用法总结_java

本文实例总结了Java中泛型的用法.分享给大家供大家参考.具体如下: 1 基本使用 public interface List<E> { void add(E); Iterator<E> iterator(); } 2 泛型与子类 Child是Parent的子类,List<Child>却不是List<Parent>的子类. 因此:List<Object> list = new ArrayList<String>()是错误的. 如果上面