[英]how to define a array's length when we do not know the actural size in Java
問題:來自標准輸入的未知數量的測驗分數,並打印出測驗分數的總數、平均值和帶 2 個小數位的總體標准差。
我的代碼是:
導入 java.util.Scanner;
公共 class Ex4_2 {
public static void main(String args[]) {
int n = 0;
Scanner input = new Scanner(System.in);
double sum = 0;
int[] scores = new int [n];
for(int i = 0; i<scores.length; i++)
{
scores[i] =input.nextInt();
sum = sum + scores[i];
}
int num = scores.length;
System.out.printf("Total number of quiz scores = %1.2f \n ", num);
System.out.printf("Average = %1.2f \n", sum/num);
double total = 0;
for(int i=0;i<scores.length;i++)
{
total += (scores[i]-(sum/num))*(scores[i]-(sum/num));
}
double SD = Math.sqrt(total/num);
System.out.printf("Standard deviation = %1.2f \n ",SD);
}
}
但是當我輸入10 20 30時,卻無法計算出正確的output,出現錯誤。 我無法理解這個錯誤的含義,也不知道什么是錯誤。 請幫助我...非常感謝!
以下是 output 和錯誤。
Total number of quiz scores = Exception in thread "main" java.util.IllegalFormatConversionException: f.= java.lang.Integer at java.base/java.util.Formatter$FormatSpecifier.failConversion(Formatter:java.4426) at java. base/java.util.Formatter$FormatSpecifier.printFloat(Formatter:java.2951) at java.base/java.util.Formatter$FormatSpecifier.print(Formatter:java.2898) at java.base/java.util.Formatter. format(Formatter:java.2673) at java.base/java.io.PrintStream.format(PrintStream:java.1053) at java.base/java.io.PrintStre am.printf(PrintStream:java.949) 在 Ex4_2.main(Ex4_2:java:16)
如果您不知道它將容納多少項目,則無法計算數組的大小。 所以你需要:
Arrays
class 中的Arrays.copyOf方法復制具有新長度的內容。或更好
您可以使用ArrayList為您完成以上所有(以及更多)工作。
我假設您真正的問題是“我該如何解決我的錯誤?”。
正如錯誤消息告訴您的那樣,問題出在這一行(第 16 行)。
System.out.printf("Total number of quiz scores = %1.2f \n ", num);
您的錯誤與數組大小無關。
您正在為浮點值%f
使用格式說明符,其值為 integer 值num
。 將%d
用於 integer。 就這樣。
這是你如何做到的。 https://replit.com/@TheCodingBros/Java#main.java首先輸入測驗候選的編號,然后給每個候選標記。 然后它將顯示總和,平均值和標准差。
以上所有答案都是正確的。 請閱讀並理解。 此外,
int n = 0;
int[] scores = new int [n];
你的循環總是會失敗,因為你用 0 實例化你的分數數組。
如果你想要一個固定的大小,那么例如。 int[] scores = new int [10];
或者根據其他答案,使用 arraylist 進行動態調整。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.