我尝试在Java中创建相当于这个,但是当我输入第一个名字时,我正面临着NullPointerException

时间:2018-04-10 00:59:31

标签: java c

这是我的第一个问题,所以请格式化我。我试着寻找答案,但却找不到我想要的东西

这是C程序,正在按预期工作

#include <stdio.h>
#include <stdlib.h>
int main() {
    int i,n;
    struct student {
        char name[20];
        int roll;
        int age;
        float marks;
    };
    printf("Enter number of students\n");
    scanf(" %d", &n);
    struct student a[n];
    for(i=0;i<n;i++) {
        printf("Enter details of student %d\n",(i+1));
        printf("Name : ");
        scanf(" %[^\n]s", &a[i].name);
        printf("Roll number: ");
        scanf(" %d", &a[i].roll);
        printf("Age : ");
        scanf(" %d", &a[i].age);
        printf("Marks : ");
        scanf(" %f", &a[i].marks);
    }
    printf("\n%-20s%-20s%-20s%-20s\n\n", "Name", "Roll no", "Age", "Marks");
    for(i=0;i<n;i++)
        printf("%-20s%-20d%-20d%-20.2f\n", a[i].name, a[i].roll, a[i].age, a[i].marks);
    return 0;
}

要用Java编写,我首先创建了一个Student类

public class Student {
    public String name;
    public int roll,age;
    public float marks;
}

然后是一个TestStructure类来制作程序

import java.util.Scanner;
public class TestStructure {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int i,n;
        System.out.println("Enter number of students");
        n=sc.nextInt();
        sc.nextLine(); //To consume new line
        Student[] a=new Student[n];
        for(i=0;i<n;i++) {
            System.out.printf("Enter details of student %d\n",(i+1));
            System.out.printf("Name : ");
            a[i].name=sc.nextLine();
            System.out.printf("Roll number: ");
            a[i].roll=sc.nextInt();
            System.out.printf("Age : ");
            a[i].age=sc.nextInt();
            System.out.printf("Marks : ");
            a[i].marks=sc.nextFloat();
            sc.nextLine(); //To consume new line
        }
        sc.close();
        System.out.printf("\n%-20s%-20s%-20s%-20s\n\n", "Name", "Roll no", "Age", "Marks");
        for(i=0;i<n;i++)
            System.out.printf("%-20s%-20d%-20d%-20.2f\n", a[i].name, a[i].roll, a[i].age, a[i].marks);
    }
}

但是一旦输入名字

,我就会得到NullPointerException

0 个答案:

没有答案