![](/img/trans.png)
[英]How to get each array of String with the largest number and with an unique key?
[英]How to get the largest number in an array?
我試圖在 10 個數字的數組中找到最大的數字。 這是我的代碼:
public static void getNumber() {
int NumbersArray[] = new int[11];
int num1;
int num2;
int largestNumber = 0;
Scanner scanner = new Scanner(System.in);
for(int i=1; i<11; i++){
System.out.println("Enter number " + i );
int no1 = scanner.nextInt();
NumbersArray[i] = no1;
}
scanner.close();
for(int i=1; i<11; i++)
{
System.out.println(NumbersArray[i]);
num1 = NumbersArray[i];
for(int j=10; j>0; j--)
{
num2 = NumbersArray[j];
if(num1>num2){
largestNumber = num1;
}
}
}
System.out.println("the largest number is " + largestNumber);
}
我在這里找到了一個真正簡單的解決方案。
但我發布這個的原因是為了找出我犯了什么錯誤。 第一部分從用戶那里得到 10 個數字,第二部分是我找到最大數字的代碼。
根據 Pshemo 的建議,在用戶輸入時記錄最大的 int。 這將您的方法的大小減少了一半,並使其更簡單和更具可讀性。
使用基於 0 的索引進行編程。 所以使用int NumbersArray[] = new int[10]
而不是int NumbersArray[] = new int[11]
。 當您聲明數組的大小時,只需輸入所需的大小,您就不必擔心 0 索引或任何事情。 對於您的 for 循環,從int i=0
並在i<10
結束。
public static void getNumber(){
int NumbersArray[] = new int[10];
int largestNumber = 0;
Scanner scanner = new Scanner(System.in);
for(int i=0; i<10; i++){
System.out.println("Enter number " + i );
int no1 = scanner.nextInt();
NumbersArray[i] = no1;
if(no1 > largestNumber)
largestNumber = no1;
}
scanner.close();
System.out.println("The largest number is: " + largestNumber);
}
問題是您要遍歷列表兩次(以嵌套方式)。 假設您有以下數字: [5, 7, 3, 4]
。 當您第一次通過內部循環時,您最終將數字與 5 進行比較。只有 7 更大,因此largestNumber
將被設置為 7。然后您將再次進行,這次與 7 進行比較。沒有什么大於7,所以它會被單獨留下。 接下來,您將與 3 進行比較。最后一次比較是 3 與 4,由於 4 較大,因此您最終將largestNumber
設置為 4,這是不正確的。
這些線路:
for(int i=1; i<11; i++)
{
System.out.println(NumbersArray[i]);
num1 = NumbersArray[i];
for(int j=10; j>0; j--)
{
num2 = NumbersArray[j];
if(num1>num2){
largestNumber = num1;
}
}
}
不要在數組中搜索最大的數字,而只是在NumbersArray
搜索任何大於當前元素的值。 因此largestNumber
不是陣列中的數量最多,但在過去數NumbersArray
比的最后一個元素較大NumbersArray
,除非的最后一個元素NumbersArray
是最大的元件,在這種情況下, largestNumber
將在最后一個值NumbersArray
。
一個可行的解決方案是:
int max = Integer.MIN_VALUE;
for(int i : NumbersArray)
if(max < i)
max = i;
盡管最有效的解決方案是在讀取輸入時直接跟蹤當前最大的輸入。
請記住,java-arrays 是基於 0 的。 這意味着第一個元素位於NumbersArray[0]
,而不是NumbersArray[1]
,就像在您的代碼中一樣。
據我所知,您可以使用 Java Math max() 方法來獲得最大數。 即: dataType max(int number1, int number2), Math.max(number1, number2) 獲取數字 1 和 2 之間的最大值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.