Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.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_Arrays - Fatal编程技术网

Java 查找数组中的最小整数,然后将其与第一个单元格交换

Java 查找数组中的最小整数,然后将其与第一个单元格交换,java,arrays,Java,Arrays,我想做的是创建一个程序,用用户输入创建并填充数组,然后找到最小的数字并与数组的第一个单元格交换 我遇到的最大问题是如何找到最小整数,但能够交换它,因为当我这样做时: for(int i = 0; i < swap.length; i++){ if(smallest > swap[i]){ smallest = swap[i]; 它没有给我想要的输出,我想知道如何找到最小的数字,并保留数组单元号,以便使用它进行交换 这是完整的当

我想做的是创建一个程序,用用户输入创建并填充数组,然后找到最小的数字并与数组的第一个单元格交换

我遇到的最大问题是如何找到最小整数,但能够交换它,因为当我这样做时:

        for(int i = 0; i < swap.length; i++){
        if(smallest > swap[i]){
            smallest = swap[i];
它没有给我想要的输出,我想知道如何找到最小的数字,并保留数组单元号,以便使用它进行交换

这是完整的当前代码:

import java.util.Scanner;
import java.util.Arrays;

public class SmallestSwap {
  public static void main(String[] args) {

    Scanner sc = new Scanner(System.in);
    System.out.println("Size of array?");
    int n = sc.nextInt();

    int [] swap = new int[n];
    int smallest = Integer.MAX_VALUE;
    for(int i = 0; i <swap.length; i++){
        System.out.println("Please enter a number: ");
        swap[i] = sc.nextInt();

    }
    for(int i = 0; i < swap.length; i++){
        if(smallest > swap[i]){
            smallest = swap[i];


        }
    }
    int temp = swap[0];
    swap[0] = smallest;
    smallest = temp;

    System.out.println("\n");
    for(int element : swap){

        System.out.println(element);
    }
}
import java.util.Scanner;
导入java.util.array;
公共类小型交换{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
System.out.println(“数组大小?”);
int n=sc.nextInt();
int[]交换=新的int[n];
int最小值=整数最大值;
for(int i=0;i交换[i]){
最小=交换[i];
}
}
int temp=交换[0];
交换[0]=最小值;
最小值=温度;
System.out.println(“\n”);
for(int元素:交换){
系统输出打印项次(元素);
}
}

}这是指针和值的问题

smallest = swap[i];
不保存对数组中真实项的引用
swap[i]
。在
最小值中
只能找到最小值。 因此,如果要交换值,必须保存索引。 这是密码

 import java.util.Scanner;
import java.util.Arrays;

public class swap {
  public static void main(String[] args) {

    Scanner sc = new Scanner(System.in);
    System.out.println("Size of array?");
    int n = sc.nextInt();

    int [] swap = new int[n];
    int index_smallest = 0;
    int smallest = Integer.MAX_VALUE;
    for(int i = 0; i <swap.length; i++){
        System.out.println("Please enter a number: ");
        swap[i] = sc.nextInt();

    }
    for(int i = 0; i < swap.length; i++){
        if(smallest > swap[i]){
            smallest = swap[i];
            index_smallest = i;

        }
    }
    int temp = swap[0];
    swap[0] = swap[index_smallest];
    swap[index_smallest] = temp;

    System.out.println("\n");
    for(int element : swap){

        System.out.println(element);
    }
  }
}


import java.util.Scanner;
导入java.util.array;
公共类交换{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
System.out.println(“数组大小?”);
int n=sc.nextInt();
int[]交换=新的int[n];
int index_最小值=0;
int最小值=整数最大值;
for(int i=0;i交换[i]){
最小=交换[i];
指数_=i;
}
}
int temp=交换[0];
交换[0]=交换[index_];
交换[索引]=临时;
System.out.println(“\n”);
for(int元素:交换){
系统输出打印项次(元素);
}
}
}

您还应该记住最小元素的索引,以便将第一个元素放在那里,
swap[smallestIndex]=temp您还应该维护元素的索引,比如int smallestIndex=0;对于(inti=0;iswap[i]){minimate=swap[i];smallestIndex=i;}}}int-temp=swap[0];交换[0]=最小值;最小值=温度;swap[smallestIndex]=最小值;这回答了你的问题吗?谢谢,我从来不知道你能做到。:)@Mindaugas那是我过去经常交换的帖子。
 import java.util.Scanner;
import java.util.Arrays;

public class swap {
  public static void main(String[] args) {

    Scanner sc = new Scanner(System.in);
    System.out.println("Size of array?");
    int n = sc.nextInt();

    int [] swap = new int[n];
    int index_smallest = 0;
    int smallest = Integer.MAX_VALUE;
    for(int i = 0; i <swap.length; i++){
        System.out.println("Please enter a number: ");
        swap[i] = sc.nextInt();

    }
    for(int i = 0; i < swap.length; i++){
        if(smallest > swap[i]){
            smallest = swap[i];
            index_smallest = i;

        }
    }
    int temp = swap[0];
    swap[0] = swap[index_smallest];
    swap[index_smallest] = temp;

    System.out.println("\n");
    for(int element : swap){

        System.out.println(element);
    }
  }
}