在此类中,我添加了方法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));

    }
}

最佳答案

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

如果要保留前导零,则应将id作为String传递到函数中。

当我们讨论这个主题时,值得注意的是012344567octal文字,我很确定这不是您想要的(请参阅JLS中的八进制文字)。

最后,要检查char变量是否包含数字零,应将其与'0'而不是与0进行比较。后者等效于与'\u0000'(即Unicode NULL character)进行比较。

关于java - 模块故障,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40184365/

10-10 16:35