Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.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 返回数组中从最小到最大的3个整数,每个整数之间的差值相同_Java_Arrays - Fatal编程技术网

Java 返回数组中从最小到最大的3个整数,每个整数之间的差值相同

Java 返回数组中从最小到最大的3个整数,每个整数之间的差值相同,java,arrays,Java,Arrays,因此,我想插入一个数字数组,然后按从大到小的顺序返回3个数字,每个数字之间的差值相同 例子: 返回: 下面的代码是我的尝试。我为循环制作了3个 循环: 第一个遍历了整个数组,选择了一个数字 第二个:对于剩余的数字,选择一个较小的数字。计算它们的差异 第三个:查找第三个数字,该数字较小,与第二个数字具有相同的差异 所以:(第一个数字-第二个数字)=(第二个数字-第三个数字) publicstaticvoidmain(字符串[]args){ int n; int num1; int num2;

因此,我想插入一个数字数组,然后按从大到小的顺序返回3个数字,每个数字之间的差值相同

例子: 返回: 下面的代码是我的尝试。我为循环制作了3个

循环:
  • 第一个遍历了整个数组,选择了一个数字
  • 第二个:对于剩余的数字,选择一个较小的数字。计算它们的差异
  • 第三个:查找第三个数字,该数字较小,与第二个数字具有相同的差异
所以:
(第一个数字-第二个数字)=(第二个数字-第三个数字)

publicstaticvoidmain(字符串[]args){
int n;
int num1;
int num2;
int num3;
int-dif;
扫描仪扫描=新扫描仪(System.in);
System.out.print(“您想从中选择多少个数字?”);
n=scan.nextInt();
int nums[]=新的int[n];
System.out.println(“请输入整数:”);

对于(int i=0;i,如果您正在寻找更快的一个,那么这适用于两个for

public static void main(String[] args) throws Exception {
    List<Integer> integers = Arrays.asList(1, 3, 5, 9, 17);
    Map<String, Integer> differenceMap = new HashMap<>();

    for (int i = 0; i < integers.size(); i++) {
        int first = integers.get(i);

        for (int j = i + 1; j < integers.size(); j++) {
            int second = integers.get(j);

            int difference = second - first;
            int next = difference + second;
            if (integers.contains(next)) {
                differenceMap.put(first + " - " + second + " - " + next, difference);
            }
        }
    }

    differenceMap.keySet().forEach(System.out::println);

}
publicstaticvoidmain(字符串[]args)引发异常{
List integers=Arrays.asList(1,3,5,9,17);
Map differenceMap=新的HashMap();
对于(int i=0;i
您需要先对数组进行排序。我可以问一下为什么需要对数组进行排序吗?@HumbleHermit您在帖子中写道7+5=14。我实际上在学校学到了7+5=12。@HumbleHermit:因为您需要迭代整个数组,并在几个步骤中找到差异(比如从1开始到n,在您的示例步骤=5中)如果3个后续成员之间的距离正好等于您的步长,则需要对数组进行排序,以便按递增步长进行扫描。噢,糟了。对不起,隔壁的Java家伙,我昨晚没睡,所以我觉得当时感觉不太好:(
2 7 12 because 2+5=7, 7+5=12. 
public static void main(String[] args) {
    int n;
    int num1;
    int num2;
    int num3;
    int dif;

    Scanner scan = new Scanner(System.in);
    
    System.out.print("How many numbers do you want to choose from? ");
    n = scan.nextInt();
    
    int nums[] = new int[n];
        
    System.out.println("Please input the integers: ");

    for (int i=0; i<n ;i++){
        nums[i] = scan.nextInt();
    }
    
    System.out.println(" ");
    
    for (int i=0; i<n; i++){
        
        for (int j=i+1; j<n; j++){      //compare element i to the rest of the array
            
            if(nums[j]<= nums[i]){  //if a num at j is smaller than num at i,
                num3 = nums[i];     //then num3 is num at i
                num2 = nums[j];     //and num2 is num at j
                dif = num3 - num2;  //find the difference
                
                for(int k=i+j+1; k<n; k++){ 
                    if(num2 == (nums[k]+ dif)){ //if num2 is num at k + difference
                    num1 = nums[k];             //then num1 must be num at k
                    }   
                }
            }
        }
    }
    System.out.print(num3); //This is the effort printing them out
    System.out.print(num2); //But for some reason I couldn't
    System.out.print(num1); //even I initialized num3,2,1 outside of the for loop
    
    scan.close();   //closing the scanner object
}
public static void main(String[] args) throws Exception {
    List<Integer> integers = Arrays.asList(1, 3, 5, 9, 17);
    Map<String, Integer> differenceMap = new HashMap<>();

    for (int i = 0; i < integers.size(); i++) {
        int first = integers.get(i);

        for (int j = i + 1; j < integers.size(); j++) {
            int second = integers.get(j);

            int difference = second - first;
            int next = difference + second;
            if (integers.contains(next)) {
                differenceMap.put(first + " - " + second + " - " + next, difference);
            }
        }
    }

    differenceMap.keySet().forEach(System.out::println);

}