[英]How would i find the position of this array index and also the minimum?
如何通過添加數組的最小值以及最小值所在的位置來完成此程序?
public static void main(String[] args) {
Scanner input;
/* A file for the program to open, the absolute location is based on
* the location of the project. /src/array2d/ locates the file in
* the current source folder
*/
File fileIn = new File("src/array2d/array2dtest1.txt");
// You can fetch the full absolute path with the method below
// System.out.println(fileIn.getAbsolutePath());
/* try...catch is necessary for reading files, as it is possible that
* the file does not exist.
*/
try {
//creating a scanner from the file, rather than using console.
input = new Scanner(fileIn);
}
catch (FileNotFoundException e) {
// if file is not found, terminate the program
System.out.println(fileIn.getName() + " is not found.");
return;
}
int row = input.nextInt();
int column = input.nextInt();
int [][] arr = new int[row][column];
int [] min = arr[0];
for (int i = 0; i < row; i++) {
for (int j = 0; j < column; j++) {
arr[i][j] = input.nextInt();
}
}
for (int i = 0; i < row; i++) {
for (int j = 0; j < column; j++) {
int k;
k = arr[i][j];
System.out.printf(" %3d", k );
}
System.out.println();
}
input.close();
//min
int i;
for(i = 1; i < arr.length; i++) {
if(i == 1)
min = arr[i];
}
System.out.printf(" min: " + min);
}
輸出應為:
39 95 99 56 41
88 8 1 48 75
3 58 13 54 80
92 72 74 25 86
30 38 3 21 2
最小值為1,其位置為(無論位置如何)
這是一個適合您的新的min
循環,該循環將填充行和列的循環,並為您的字符串提供更好的格式化樣式:)
int min = 0; /* set initial minimum */
int minRowPos = 0; /* set minimum row and column positions */
int minColPos = 0;
for(int i = 0; i < row; i++)
{
for(int j = 0; j < column; j++)
{
int k;
k = arr[i][j];
System.out.printf(" %3d", k );
if(min < arr[i][j]){ /* test and set new min across arr */
min = arr[i][j];
minRowPos = i; /* set row position of new minimum */
minColPos = j; /* set col position of new minimum */
}
}
System.out.println();
System.out.printf("Array min: %d at row, column: %d,%d ", min, minRowPos, minColPos);
}
input.close();
另外,刪除頂部的min
聲明
int [] min = arr[0];
您可以更干凈一些,如果願意的話,可以將所有聲明移到類的頂部,但是我不想再把事情弄得一團糟,只保留一小部分更改。
//min
int i;
int pos;
for(i = 1; i < arr.length; i++) {
if(i == 1)
min = arr[i];
pos = i;
}
System.out.printf(" min: " + min + " position " + pos );
首先,您的代碼int [] min = arr[0];
應該會給您一個錯誤,因為您不能擁有類型為int的int []引用變量。
現在來回答:
<java>
int minimum = arr[0];
int minimum_index = 0
for(int i = 1;i<arr.length;i++){
if(arr[i]<minimum){ // Found an array element lesser than previously recorded minimum
minimum = arr[i]; //update the recorded minimum
minimum_index = i; // update the recorded minimum index
}
}
System.out.printf("Array minimum %d found at %d",minimum,minimum_index);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.