我有一個程式,可以找到一個陣列的模式。以下是代碼:
System.out.print("你想找多少個數字的模式?")。)
double[] inputs = new double[scanner.nextInt()] 。
for(int i = 0; i < inputs.length; i ) {
System.out.println("輸入數字" i)。
inputs[i] = (double) scanner.nextDouble();
}
Arrays.sort(inputs)。
int count2 = 0;
int count1 = 0;
double popular1 = 0;
double popular2 = 0;
/finds most popular value in the array /finds most popular value in the array
for(int i = 0; i < inputs.length; i ) {
popular1 = inputs[i];
count1 = 1;
for(int j = i 1; j < inputs.length; j ) {
if(popular1 == inputs[j]) {
count1 ;
}
}
if(count1 > count2) {
popular2 = popular1;
count2 = count1;
} else if(count1 == count2) {
popular2 = Math.min(popular2, popular1); //當有兩個贏家時,最低的一個是模式。
}
}
finalans = "那些" inputs.length 數字的模式是" popular2 ",有一個驚人的" count1 " 出現。
return finalans。
然而,當運行時,我沒有得到想要的輸出。首先,它不能正確計數,其次,它并不總是能檢測出哪個數字是平均值。以防萬一,完整的程式如下:
。import java.util.Arrays;
import java.util.Scanner;
public class Calculator {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in)。
boolean again = true。
while(again == true) {
System.out.println(runMath())。
System.out.println("你想再次運行嗎? true or false")。
again = scanner.nextBoolean()。
}
scanner.close()。
}
public static String runMath() {
double solution1;
double solution2;
字串finalans。
Scanner scanner = new Scanner(System.in)。
System.out.println("操作ID? 1 = Add, 2 = Sub, 3 = Mul, 4 = Div, 5 = Ave")。)
int ID = scanner.nextInt()。
solution1 = 0;
solution2 = 0;
switch (ID) {
case 1: {System.out.println("你想加多少個數字?")。
double[] inputs = new double[scanner.nextInt()]。
for(int i = 0; i < inputs.length; i ) {
System.out.println("Input number" i)。
inputs[i] = (double) scanner.nextDouble();
}
for(int i = 0; i < inputs.length; i ) {
solution1 = inputs[i];
}
finalans = "這些" inputs.length 數字的總和是" solution1。
return finalans;}。
case 2: {System.out.println("你想減掉多少個數字?")。
System.out.println("所有的數字都從第一個數字中減去,按照輸入的順序。")。
double[] inputs = new double[scanner.nextInt()]。
for(int i = 0; i < inputs.length; i ) {
System.out.println("輸入數字" i)。
inputs[i] = (double) scanner.nextDouble();
}
solution1 = inputs[0] 。
for(int i = 1; i < inputs.length; i ) {
solution1 -= inputs[i];
}
finalans = "這些" inputs.length 數字的差值是" solution1。
return finalans;}。
case 3: {System.out.println("你要乘多少個數字?")。
double inputs[] = new double[scanner.nextInt()]。
for(int i = 0; i < inputs.length; i ) {
System.out.println("輸入數字" i)。
inputs[i] = (double) scanner.nextDouble();
}
solution1 = inputs[0] 。
for(int i = 1; i < inputs.length; i ) {
solution1 *= inputs[i];
}
finalans = "這些" inputs.length 數字的乘積是" solution1。
return finalans;}。
case 4: {System.out.println("你要除多少個數字?")。
System.out.println("所有的數字都從第一個數字中減去,按輸入的順序。")。
double[] inputs = new double[scanner.nextInt()]。
for(int i = 0; i < inputs.length; i ) {
System.out.println("輸入數字" i)。
inputs[i] = (double) scanner.nextDouble();
}
solution1 = inputs[0] 。
for(int i = 1; i < inputs.length; i ) {
solution1 /= inputs[i];
}
finalans = "這些" inputs.length 數字的商數是" solution1"。
return finalans;}。
case 5: {System.out.println("你想平均多少個數?")。
double[] inputs = new double[scanner.nextInt()] 。
for(int i = 0; i < inputs.length; i ) {
System.out.println("Input number" i)。
inputs[i] = (double) scanner.nextDouble();
}
for(int i = 0; i < inputs.length; i ) {
solution1 = inputs[i];
}
solution1 /= inputs.length。
finalans = "這些" inputs.length 數字的平均值是" solution1。
return finalans;}。
case 6: {System.out.println("你想找多少個數字的中位數?")。
double[] inputs = new double[scanner.nextInt()]。
for(int i = 0; i < inputs.length; i ) {
System.out.println("Input number" i)。
inputs[i] = (double) scanner.nextDouble();
}
Arrays.sort(inputs)。
if(inputs.length % 2 == 0) {
solution1 = (inputs[inputs.length / 2] inputs[inputs.length / 2 - 1] ) / 2;
} else solution1 = inputs[inputs.length / 2] 。
finalans = "這些" inputs.length "數字的中值是" solution1。
return finalans;}。
case 7: {System.out.println("你想找多少個數字的模式?")。)
double[] inputs = new double[scanner.nextInt()] 。
for(int i = 0; i < inputs.length; i ) {
System.out.println("輸入數字" i)。
inputs[i] = (double) scanner.nextDouble();
}
Arrays.sort(inputs)。
int count2 = 0;
int count1 = 0;
double popular1 = 0;
double popular2 = 0;
/finds most popular value in the array /finds most popular value in the array
for(int i = 0; i < inputs.length; i ) {
popular1 = inputs[i];
count1 = 1;
for(int j = i 1; j < inputs.length; j ) {
if(popular1 == inputs[j]) {
count1 ;
}
}
if(count1 > count2) {
popular2 = popular1;
count2 = count1;
} else if(count1 == count2) {
popular2 = Math.min(popular2, popular1); //當有兩個贏家時,最低的一個是模式。
}
}
finalans = "那些" inputs.length 數字的模式是" popular2 ",有一個驚人的" count1 " 出現。
return finalans;}。
default: return "ur mom";
}
}
感謝任何可能解決這個問題的天才們!
uj5u.com熱心網友回復:
在你的代碼中我注意到一件事,你用count1作為你當前回圈的臨時容器。所以你應該在你的finalans中使用count2而不是count1。
finalans = "The mode of those "/span> inputs. length " 數字是" popular2 ",有一個驚人的" count2 " 出現。"。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/331083.html
標籤:
下一篇:四邊形面積公式
