在循环中检查值是否等于另一个值(java)

时间:2015-11-18 15:55:23

标签: java

我需要找到10次不同的值,或者直到找到两次差值。如果找到,我真的不确定如何打破循环。

以下是代码:

public class Algorithm {
    private static int small; //global field so it is usable in zeros method

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        int number = 0;
        // object array to use collections class
        Integer [] digit = new Integer [4]; 
        // loop for handling 10 different numbers
        for (int index=0; index<10; index++){ 
            number = random();
            String smaller =""; String bigger=""; // strings used to display zeros/ easier processing 
            for (int i = 3; i >= 0; i--) {
                digit[i] = number % 10;
                number /= 10;   
            }
            // prints initial random number
            System.out.println(digit[0] + " " +digit[1] + " " + 
            digit[2]+ " "+ digit[3] + " Random Number");
            // sorts the digits increasingly
            Arrays.sort(digit);
            // adds the numbers to the smaller string
            for (int i=0; i <digit.length; i++){
                smaller += digit[i]; 

            }
            // convert string to int
            int small = Integer.parseInt(smaller); 
            String zerosNr = null;
            zerosNr = zeros();
            System.out.printf(" smaller " +zerosNr, small );
            // Reverse sort order and adds results to bigger for displaying
            Arrays.sort(digit, Collections.reverseOrder());
            for (int i=0; i < digit.length; i++){
                bigger += digit[i];
            }
            int big = Integer.parseInt(bigger);

            System.out.println("bigger " + big);
            int difference = 0;
            int [] copy;
            copy = new int[11];
            difference = big - small;
            copy[index] = big - small;
            // here i tried to do it 
            System.out.println( index + " Difference "+ difference);
            if (difference == copy[index+1]) 
                break;
        }
    }
    //method that creates random numbers
    public static int random(){
        final int n = 9999;
        Random rad = new Random();
        int number = rad.nextInt(n);
        return number;

    }
    //method that adds zeros where necesarry to smaller
    public static String zeros(){
        String zerosNr = null;
            if (small < 1000)
                return " %04d\n ";
            else if (small < 100)
                return " %03d\n ";
            else 
                return " %02d\n ";

    }
}

2 个答案:

答案 0 :(得分:0)

您的方法存在的问题是,您尝试根据“未来”值进行分解,即当您比较difference == copy[index+1]时尚未填充copy[index+1]。你还没到那么远。

相反,您应该将difference过去的copy进行比较。而且,您必须将difference的每个copy所有之前的值进行比较。如下所示:

boolean iShouldBreak = false;
for (int j = 0; j < index; j++) {
    if (difference == copy[j]) {
        iShouldBreak = true;
    }
}
if (iShouldBreak)
{
    break;
]

答案 1 :(得分:0)

您需要使用标签:

例如:

OUTERFOR: for(Object1 object1: objects){
  for(Object2 object2: object1.getMoreObjects()){
    if( object2.isWhatever()) {
      break OUTERFOR;
    }
  }// inner for loop ends here
}// outer for loop ends here