这是我的第一个问题,所以请格式化我。我试着寻找答案,但却找不到我想要的东西
这是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