用诸如:int i = Math.floor(num/1000);的方法得到某一位的值
再进行比较和判断即可

解决方案 »

  1.   

    6531与5265都在1与6这间, 所以应为1354,6531,5265可以;5824不行
    package myprojects.integercheck;class IntegerCheck {

    public IntegerCheck() {

    }
    public boolean CheckInteger(int aInt) {
    String s = String.valueOf(aInt);
    for (int i = 0; i < s.length(); i++) {
    if  ((s.charAt(i) > '6') || (s.charAt(i) < '1')) {
    System.out.println(s + " is False");
    return false;
    }
      }
    System.out.println(s + " is pass");
      return true;
    } public static void main(String args[]) {
    System.out.println("Starting IntegerCheck...");
    IntegerCheck ic = new IntegerCheck();
    ic.CheckInteger(1354);
    ic.CheckInteger(6531);
    ic.CheckInteger(5824);
    ic.CheckInteger(5265);

    }
    }
      

  2.   

    boolean check(int n){
      int[] digits = new int[4];
      for (int i = 0; i < 4; i++){
        digits[i] = n % 10;
        if (digits[i] < 1 || digits[i] > 6) return false;
        n = (n - digits[i]) / 10;  
      }
      // 到这里,digits数组存放了四个整数,分别是四位书n的四个数位
      // 并且这四个数都不可能小于1或大于6,否则已经return了
      
      return (digits[0] != digits[1] && 
              digits[0] != digits[2] &&
              digits[0] != digits[3] &&
              digits[1] != digits[2] &&
              digits[1] != digits[3] &&
              digits[2] != digits[3]);
    }将你要检查的4位整数作为参数传进去,返回true说明符合条件,否则不符合条件
      

  3.   

    Ok,加入处理不重复数, 代码如下:
    package myprojects.integercheck;import java.util.Hashtable;class IntegerCheck {
    public IntegerCheck() {

    }
    public boolean CheckInteger(int aInt) {
    String s = String.valueOf(aInt);
    char cInt;
    Hashtable ht = new Hashtable();
    for (int i = 0; i < s.length(); i++) {
      cInt = s.charAt(i);
    String sc = String.valueOf(cInt);
    if (ht.get(sc) !=null) {
    System.out.println(s + " is False");
    return false;
    } else {
    ht.put(sc, sc);
    }
    if  ((cInt > '6') || (cInt < '1')) {
    System.out.println(s + " is False");
    return false;
    }
      }
    System.out.println(s + " is pass");
      return true;
    } public static void main(String args[]) {
    System.out.println("Starting IntegerCheck...");
    IntegerCheck ic = new IntegerCheck();
    ic.CheckInteger(1354);
    ic.CheckInteger(6531);
    ic.CheckInteger(5824);
    ic.CheckInteger(5265);

    }
    }
      

  4.   

    不需要用int i = Math.floor(num/1000);的方法得到某一位的值。你看我的方法: 把四位数求膜10,得到个位数。  然后用这个
    (四位数 - 个位数) / 10  = 一个由原来四位数的最高三位组成的三位数用同样的办法得到各个位的数字,用一个循环就可完成。 在我的循环里还加了
    if (digits[i] < 1 || digits[i] > 6) return false;就是在取各个位数字的同时,一但取到超过范围的数字就直接跳出。这样提高程序的效率!!
    因为如果你来判断 5347 这个数字的时候, 执行第一次循环的时候就可以得出结果了(因为个位是7),不需要执行后面的程序了
      

  5.   

    我把用户输入的数字(String类)变为int[],再依次判断是否在1~6之间和是否重复,
    问题解决,谢谢各位!