模块故障

时间:2016-10-21 19:43:13

标签: java class methods

在这个类中,我添加方法addstudent(),这里的参数应至少有8个数字,并且第一个数字为零。当我运行程序时,我总是变得虚假。

import java.io.*;

public class Module {

    public static final int MAX_STUDENTS = 300;

    private String module;
    private int id;
    private String lec;
    private String code;
    private int sem;
    private String modCode;
    private String group;


    public Module() {
        module = "module";
    }

    public Module(String modCode) {
        this.modCode = modCode;
    }

    public boolean addStudent(int id) {  

        String s_id = Integer.toString(id);
        int idlength = s_id.length();
        char fdigit = s_id.charAt(0);
        boolean b1 = fdigit == 0;

        if ((idlength >= 8) && (b1)) { 
                return true;
        }
            else {
                return false;

            }

    }
}

这是测试类 -

import java.io.*;

public class ModuleTest {
    public static void main(String[] args) {

     Module Software = new Module("0123456789");

        Software.addStudent(012344567);

        System.out.println(Software.addStudent(012344567));

    }
}

1 个答案:

答案 0 :(得分:3)

当您在int变量中存储数字时,没有前导零的概念。例如,1和01表示完全相同,因此无法区分。

如果您想保留前导零,则应将id作为String传递给函数。

虽然我们讨论这个主题,但值得注意的是012344567是一个octal字面值,我很确定这不是你想要的(关于{{3中的八进制文字) }})。

最后,要检查char变量是否包含数字零,您应该与'0'进行比较,而不是与0进行比较。后者相当于与'\u0000'进行比较,后者是JLS