在同一行上打印

时间:2017-10-09 11:30:16

标签: java

我是Java的新手,我试图在1行打印学生数字和数字(在这种情况下为cijfer)。但由于某种原因,我得到了奇怪的迹象等。当我尝试别的东西时,我得到一个非静态的上下文错误。这意味着什么?这是如何运作的?

这里是我的代码:

import java.text.DecimalFormat;
import java.util.Arrays;


public class Student {
public static final int AANTAL_STUDENTEN = 50;
public  int[] studentNummer = new int[AANTAL_STUDENTEN];
public String[] cijfer;


public int[] StudentNummers() {

    for (int i = 0; i < AANTAL_STUDENTEN; i++) {
        studentNummer[i] = (50060001 + i);

    }
    return studentNummer;
}

 public  String[] cijfers(){

    for (int i = 0; i < AANTAL_STUDENTEN; i++) {
        DecimalFormat df = new DecimalFormat("#.#");

        String cijferformat = df.format(Math.random() * ( 10 - 1 ) + 1);
        cijfer[i++] = cijferformat;
    }
    return cijfer;
}

public static void main(String[] Args) {
    System.out.println("I cant call the cijfer and studentnummer.");
}
}

另外我知道我的cijfer数组正在给出一个nullpointer异常。我仍然需要解决这个问题。

4 个答案:

答案 0 :(得分:0)

我不是java开发人员但是尝试

System.out.print

答案 1 :(得分:0)

只需将所有方法和类变量设为static即可。然后您可以通过main方法访问它们。此外,您在代码中遇到了一些错误:

public class Student {
    public static final int AANTAL_STUDENTEN = 50;
    // NOTE: static variables can be moved to local ones

    // NOTE: only static method are available from static context
    public static int[] StudentNummers() {
        int[] studentNummer = new int[AANTAL_STUDENTEN];

        for (int i = 0; i < AANTAL_STUDENTEN; i++)
            studentNummer[i] = 50060001 + i;

        return studentNummer;
    }

    // NOTE: only static method are available from static context
    public static String[] cijfers() {
        // NOTE: it is better to use same `df` instance
        DecimalFormat df = new DecimalFormat("#.#");
        String[] cijfer = new String[AANTAL_STUDENTEN];

        for (int i = 0; i < AANTAL_STUDENTEN; i++)
            // NOTE: remove `i++`, because we have it in the loop
            cijfer[i] = df.format(Math.random() * (10 - 1) + 1);

        return cijfer;
    }

    // NOTE: this is `static` method, therefore it has access only to static methods and variables
    public static void main(String[] Args) {
        String[] cijfer = cijfers();
        int[] studentNummer = StudentNummers();

        // TODO you can pring two arrays one element per line
        for(int i = 0; i < AANTAL_STUDENTEN; i++)
            Sytem.out.println(cijfer[i] + '-' + studentNummer[i]);

       // TODO as alternative, you can print whole array
       System.out.println(Arrays.toString(cijfer));
       System.out.println(Arrays.toString(studentNummer));
    }
}

答案 2 :(得分:0)

你可以循环System.out.print。否则,使您的函数静态以从main访问它们。同时初始化你的cijfer数组。

答案 3 :(得分:0)

除了我在评论中提到的内容外,您的设计还需要工作。您有一个class Student,其中包含50个studentNummercijfer个成员。据推测,Student只有一个studentNummer和一个cijfer。您需要2个类:1个用于单个Student,1个用于保存所有Student个对象(例如StudentBody)。

public class StudentBody {
    // An inner class (doesn't have to be)
    public class Student {
        // Just one of these
        public  int studentNummer;
        public String cijfer;

        // A constructor. Pass the student #
        public Student(int id) {
            studentNummer = id;
            DecimalFormat df = new DecimalFormat("#.#");
            cijfer = df.format(Math.random() * ( 10 - 1 ) + 1);
        }

        // Override toString
        @Override
        public String toString() {
            return studentNummer + " " + cijfer;
        }
    }

    public static final int AANTAL_STUDENTEN = 50;
    public Student students[] = new Student[AANTAL_STUDENTEN];

    // StudentBody constructor
    public StudentBody() {
        // Create all Students
        for (int i = 0; i < AANTAL_STUDENTEN; i++) {
            students[i] = new Student(50060001 + i);
        }
    }

    // Function to print all Students
    public void printStudents(){
        for (int i = 0; i < AANTAL_STUDENTEN; i++) {
            System.out.println(students[i]);
       }
    }

    public static void main(String[] Args) {
        // Create a StudentBody object
        StudentBody allStudents = new StudentBody();
        // Print
        allStudents.printStudents();
    }
}