new-Java中数组的问题,总是报空指针错误

问题描述

Java中数组的问题,总是报空指针错误
 class Sinfo {
    public String name;
    public int age;
    public int grade;

    public Sinfo() {
        // TODO Auto-generated constructor stub
    }
}

 Scanner cin = new Scanner(System.in);
        int n = cin.nextInt();
        Sinfo[] su = new Sinfo[n];
        while (cin.hasNext()) {
            for (int i = 0; i < su.length; i++) {
                su[i].name = cin.next();
                su[i].age = cin.nextInt();
                su[i].grade = cin.nextInt();
            }

        }
  1. 1. 定义了一个信息类,然后创建了信息类的数组,为什么每次需要往数组中读的时候都会报空指针错误?

解决方案

su[i].name = cin.next();
前面加上
su[i] = new Sinfo();

解决方案二:

su[i].name = cin.next();
前面加上
su = new Sinfo();

解决方案三:

 for (int i = 0; i < su.length; i++) {
                su[i] = new Sinfo();//要先new一个对象
                su[i].name = cin.next();
                su[i].age = cin.nextInt();
                su[i].grade = cin.nextInt();
            }

解决方案四:

import java.util.Scanner;

public class App {
public String name;
public int age;
public int grade;

public static void main(String[] args) {
    Scanner cin = new Scanner(System.in);
    int n = cin.nextInt();

    App[] su = new App[n];
    while (cin.hasNext()) {
        for (int i = 0; i < su.length; i++) {
            su[i] = new App();
            su[i].name = cin.next();
            su[i].age = cin.nextInt();
            su[i].grade = cin.nextInt();
            System.out.println("su.name: "+su[i].name + ", su.age: "+su[i].age + ", su.grade: "+su[i].grade);
        }
    }
}

}

时间: 2024-08-31 08:33:03

new-Java中数组的问题,总是报空指针错误的相关文章

java中数组转集合问题.

问题描述 java中数组转集合问题. List test = java.util.Arrays.asList(new int[]{3, 5, 3, 4}); 为什么这个会报错,也会报错. List test = java.util.Arrays.asList(new Double[]{3, 5, 3, 4}); 这个却不会报错,而且能用增强for,为什么Integet却连转都转不了. 还有,基本数据类型数据能有办法转集合吗? 数组转集合后是不是不能添加元素. 解决方案 List test = j

java中数组越界是什么意思

问题描述 java中数组越界是什么意思 java中数组越界是什么意思 是不是数组的元素的类型发生不统一的情况 解决方案 越界就是超过了边界,数组脚标是从0开始的,你定义的数组长度为5,那么你的脚标就只能是0,1,2,3,4 .向上或向下超过了超过了都是越界 解决方案二: 数组越界就是提供的下标超出边界(out of bound),比如 int[] a = new int[10]; 那么 a[-1] 和 a[11]就是越界. 解决方案三: 比如你定义了一个长度为5的数组int[] a = new

转型-Java中数组的类型转换问题

问题描述 Java中数组的类型转换问题 向上转型自不用说,对向下转型原理也知道,主要看父类的引用:如果父类变量引用的是正确的子类类型(即父类对象引用的是子类型的内存空间,然后赋给子类对象),则赋值将执行:如果父类变量引用的不是相关的子类型,将产生ClassCastException异常. 通过下属代码测试,符合原理. Object[] o={"qw","we","rt"}; Object[] oo=new String[]{"qw&qu

java中数组的问题,int [3]表示有三个元素的类型是int的吗

问题描述 java中数组的问题,int [3]表示有三个元素的类型是int的吗 int [3]表示有三个元素的类型是int的吗 int [3] [ ] int [ ] [3] 有语法错误吗? int [3] [ ] ==int [ ] [3] 吗 解决方案 你刚学的java吧. int[3]没有这种写法 一般是int[] a =new int[3]代表的是一个数组. int [3] [ ]这种是二维数组.不写默认为0. int [3] [ ] ==int [ ] [3]哪有这种写法~ 解决方案二

Java中数组的创建与传参方法(学习小结)_java

(一)数组的创建 数组的创建包括两部分:数组的申明与分配内存空间. int score[]=null; //申明一维数组 score=new int[3]; //分配长度为3的空间 数组的申明还有另外一种方式: int[] score=null; //把中括号写在数组名前面 通常,在写代码时,为了方便,我们将两行合并为一行: int score[]=new int score[3]; //将数组申明与分配内存写在一行 (二)传递参数 由于初学java,这里只讨论值传递,不考虑地址传递.主要有3点

java中数组和图片的相互转换问题。

问题描述 java中数组和图片的相互转换问题. 由于需求,我把一个灰度图片转成了一个short类型的数组. File file = new File("grayImage.jpg"); BufferedImage src=ImageIO.read(file); int width=src.getWidth(null); int height=src.getHeight(null); int minX=src.getMinX(); int minY=src.getMinY(); shor

JAVA中数组问题

问题描述 我直接写内容:inta[]=newint[4];intb[]=newint[4];a.equals(b);false????第一个不懂为什么是FALSEinta[]=newint[]{1,2,3,4};intb[]=newint[]{1,2,3,4};a.equals(b);false????还是不懂为什么是FALSE帮帮的谢谢了 解决方案 解决方案二:equal不是只在String中才用到的吗?解决方案三:equals比较的值,a和b又不是一个值怎么比较啊?当然是false解决方案四

java 中数组是值类型还是引用类型?

问题描述 java 中数组是值类型还是引用类型?Object o = new int[] {1,2,3};观点1:数组类型是一族类型,它们都继承自System.Array,而System.Array又继承自System.Object.所有的数组类型都是引用类型.观点2:看你的数组是用的类对象还是基本数据类型了如果是值类型的数组,比如int[],那里面存的就是值类型.引用类型,就存引用咯!观点3:除了基本数据类型,其他的都是引用数据类型或者其他说法! 解决方案 除了基本数据类型,其他的都是引用数据

Java中数组 问题。。。。。。。。。。。。。。。

问题描述 Java中数组 问题............... 结果是什么 解决方案 已知是什么?三个数组,一个二维数组 要求什么?没看懂.同一个字母在三个数组中都有可能出现,位置还可能不一样,所以结果不唯一啊. 解决方案二: 没看明白题目,是要把二维数组所有字母下标列出还是列出和一维数组对应的? 解决方案三: 先遍历二维数组,得到数组下标和对应的元素,然后根据元素找到其在一维数组的位置:最后按你最下面要求的打印出来就行了,很简单的equal就能搞定