Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查一个值是否等于循环中的另一个值(java)_Java - Fatal编程技术网

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

检查一个值是否等于循环中的另一个值(java),java,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[]

我需要找到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 ";

    }
}
公共类算法{
private static int small;//全局字段,因此在zeros方法中可用
/**
*@param指定命令行参数
*/
公共静态void main(字符串[]args){
//此处的TODO代码应用程序逻辑
整数=0;
//要使用集合类的对象数组
整数[]位=新整数[4];
//循环处理10个不同的数字
对于(int-index=0;index=0;i--){
数字[i]=数字%10;
数目/=10;
}
//打印初始随机数
System.out.println(数字[0]+“”+数字[1]+“”+
数字[2]+“”+数字[3]+“随机数”);
//越来越多地对数字进行排序
数组。排序(数字);
//将数字添加到较小的字符串中

对于(int i=0;i而言,您的方法的一个问题是,您试图基于“未来”值进行突破,即,当您比较
差异==copy[index+1]
时,您还没有填充
copy[index+1]
。您只是还没有走那么远

相反,您应该将
差异
复制
的过去值进行比较。您必须将每个
差异
复制
的所有先前值进行比较。例如:

boolean iShouldBreak = false;
for (int j = 0; j < index; j++) {
    if (difference == copy[j]) {
        iShouldBreak = true;
    }
}
if (iShouldBreak)
{
    break;
]
boolean iShouldBreak=false;
对于(int j=0;j
您需要使用标签:

例如:

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

你可能想详细说明你所追求的实际目标,即输入、期望的输出等,而不仅仅是转储代码。我马上想到的问题是:哪个循环?哪个值?需要什么输出?等等。所以,下面它说,“我试着这么做了”,看起来你连续两次试图为
差异
找到相同的值。这就是你想要的吗?这是我第一次发布问题,所以是的..所以基本上我想打破大循环(循环10次)如果变量差的任何值在循环的未来迭代中等于另一个差的值,那么为了清楚起见,您想从嵌套的for循环中中断外部for循环吗?是的,我想从外部循环本身中断外部循环它似乎不起作用,但感谢您指出我的逻辑中的错误,我将尝试g从这里开始,祝你好运。如果你能更好地隔离你的问题,请随时再次提问。可能最好再单独提出一个问题。尽量提供一个最小的、完整的、可验证的示例: