检查一个值是否等于循环中的另一个值(java)
我需要找到10次不同的值,或者直到找到两次差值。我真的不知道如何打破循环,如果发现 代码如下:检查一个值是否等于循环中的另一个值(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[]
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从这里开始,祝你好运。如果你能更好地隔离你的问题,请随时再次提问。可能最好再单独提出一个问题。尽量提供一个最小的、完整的、可验证的示例: