2014-12-06 76 views
0

我正在嘗試查找已計算的這三個變量(aCounter,bCounter,cCounter)的最大值。 Java不喜歡我將它們放入字符串中。 在此先感謝你們!Java:獲取變量的最大值

double aCounter=0; 
    double bCounter=0; 
    double cCounter=0; 

     { code to count occurrences of each character in text file } 

    String lines = aCounter + bCounter + cCounter; 
    String [] array = lines.split (" "); //splits with a space 
    int largestInt = Integer.MIN_VALUE; 
    for (String numberString : array) 
    { 
     int number = Integer.parseInt(numberString); 
     if (number > largestInt) 
     { 
      largestInt = number; 
     } 
    } 
bw.write (largestInt); 

回答

0
String lines = aCounter +" "+ bCounter +" "+ cCounter; 
0

此時應更換

String lines = aCounter + bCounter + cCounter; 

String lines = aCounter + " " + bCounter + " " + cCounter; 

如果你真的想用這種方式,否則

int largest=0; 
if(aCounter>bCounter) { 
if(aCounter>cCounter) { 
    largest=aCounter; 
} else { 
    largest=cCounter; 
} 
} else { 
if(bCounter>cCounter) { 
    largest=bCounter; 
} else { 
    largest=cCounter; 
} 
} 

int largest=Integer.MIN_VALUE; 
if(aCounter>largest) largest=aCounter; 
if(bCounter>largest) largest=bCounter; 
if(cCounter>largest) largest=cCounter; 

會是一個更好的方式,跳過字符串使用。

3

很奇怪,你在做什麼:

  • 串連三個數字轉換成字符串
  • 分割字符串
  • 解析出的數字拆分結果
  • 找到最大的....

你可以從你的號碼直接找到最大值:

int largestInt = Math.max(aCounter, Math.max(bCounter, cCounter)); 

或者,如果你不想使用Math.max,則:

double largestOfAB = aCounter > bCounter ? aCounter : bCounter; 
int largestInt = largestOfAB > cCounter ? largestOfAB : cCounter; 

或者,如果你想有一個循環的解決方案:

double largest = aCounter; 
for (double number : new double[]{ bCounter, cCounter}) 
{ 
    if (number > largestInt) 
    { 
     largest = number; 
    } 
} 
int largestInt = (int) double; 

順便說一下它引出了一個問題,爲什麼aCounterbCountercCounter類型double? 字母數表示整數。 除非它是平均數。但是,如果它是平均數,那麼爲什麼你會希望int最終價值largestInt? 由於largestInt的類型爲int,因此使用int代替計數器是有意義的。

+0

這是雙重因爲我已經把總數除以字母。 – Lauren 2014-12-08 02:16:10

+0

我明白了。在這種情況下,我在我的文章中將最大的OAB的類型改爲了兩倍 – janos 2014-12-08 08:07:53