2016-08-19 48 views
1

如何顯示每個級別(R,1,2,3,4)中的學生人數?如何在數組中顯示2個數字之間的信息#

此程序需要數字的用戶輸入:R是50,下,第1級爲40-60,級別2是60-70,第3級爲70-80和第4級是80+

我使用陣列:

ArrayList<Integer> strArray = new ArrayList<>(); 

顯示一個人輸入的信息。我只是有一些麻煩。有人能幫我嗎?我正在使用NetBeans。

示例輸入:12,32,56,76,89,87,78

我希望能夠使它所以它說R:2,報警等級1:1,LVL2:0,LVL3: 2,Lvl 4:2

回答

0

這裏我使用了if語句並將結果保存在String中。然後存儲串入數組列表:

ArrayList<Integer> strArray = new ArrayList<>(); 
int txtLevel =Integer.parseInt(userTxt.getText()); 
      String result =""; 
      if(txtLevel >=40 && txtLevel <60){ 
       result = "Level 1"; 
      } 
      else if(txtLevel >=60 && txtLevel <70){ 
       result = "Level 2"; 

      }else if(txtLevel >=70 && txtLevel <=80){ 
       result = "Level 3"; 
      }else { 
       result = "Level 4"; 
      } 
strArray.add(result); 
+0

我希望我有你的問題。不過,讓我知道你是否需要任何幫助。 –

+0

我得到它的工作,我可以幫你一點,你必須寫txtlevel == 80或它不會計算任何數字,如70,80,60 – jack

+0

我可以使用幫助如何排序數組字符串 – jack

1

請嘗試下面的代碼,這將幫助你,

public void showResult() 
    { 
     int LevelR = 0, Level1 = 0, Level2 = 0, Level3 = 0, Level4 = 0; 
     ArrayList<Integer> strArray = new ArrayList<>(); 

     strArray.add(12); 
     strArray.add(32); 
     strArray.add(56); 
     strArray.add(76); 
     strArray.add(89); 
     strArray.add(87); 
     strArray.add(78); 

     for(int i : strArray) 
     { 

      if(i < 50) 
      { 
       LevelR++; 
      } 
      else if(i >= 50 && i < 60) 
      { 
       Level1++; 
      } 
      else if(i >= 60 && i < 70) 
      { 
       Level2++; 
      } 
      else if(i >= 70 && i < 80) 
      { 
       Level3++; 
      } 
      else if(i >= 80) 
      { 
       Level4++; 
      } 
     } 

     System.out.println("R:" + LevelR + ", Lvl 1:" + Level1 + ", Lvl2:" + Level2 + " ,Lvl3:" + Level3 + ", Lvl 4:" + Level4); 
    } 

我已經添加靜態內部函數值,你可以通過它在功能和使用根據您的要求。

+0

thx大聲笑我完成它之前,你可以發佈這個thx無論如何,但該程序仍然buging你沒有在catagores像80值 – jack

0

有了你的問題,我假設你是Java的初學者,仍然在學習編程的基本概念。

您必須遵循以下步驟:

  1. 可以預先定義的範圍。上面的解決方案也可以工作。否則,您可以使用Java的ValueRange功能。
  2. 掃描輸入字符串。你可以使用Scanner
  3. 掃描輸入字符串後,必須通過刪除逗號來分隔數字。
  4. 您必須將輸入數字映射到適當的範圍,並獲取每個範圍中輸入值的數量。
  5. 現在,你將不得不產生預期的輸出

下面的解決方案實現了使用Java8步驟(2-5)。學習這個實現對你也很有用。

public static void main(String[] args) { 
    //Define Range and their message in the output 
    Map<ValueRange, String> rangeToMessage = new LinkedHashMap<ValueRange, String>() { 
     { 
      put(ValueRange.of(0, 40), "R"); 
      put(ValueRange.of(40, 60), "Lvl 1"); 
      put(ValueRange.of(60, 70), "Lvl 2"); 
      put(ValueRange.of(70, 80), "Lvl 3"); 
      put(ValueRange.of(80, Integer.MAX_VALUE), "Lvl 4"); 
     } 
    }; 
    //Process Input String 
    String input = "12,32,56,76,89,87,78"; 
    input.split(","); 
    List<String> strArray = Arrays.asList(input.split(",")); 
    Function<Integer, Optional<ValueRange>> getRange = value -> rangeToMessage.keySet().stream() 
      .filter(t -> t.isValidIntValue(value)).findFirst(); 
    //Map input numbers to their appropriate Range and get the number of input value in each Range 
    Map<ValueRange, Long> rangeNcount = strArray.stream().map(Integer::parseInt).map(getRange) 
      .filter(opt -> opt.isPresent()).map(opt -> opt.get()) 
      .collect(Collectors.groupingBy(Function.identity(), Collectors.counting())); 
    //Produce expected output message 
    Function<ValueRange,Long> getCount = range-> (rangeNcount.get(range)==null)?Long.valueOf(0):rangeNcount.get(range); 
    String outputMessage = rangeToMessage.keySet().stream().map(range->rangeToMessage.get(range)+":"+getCount.apply(range)).collect(Collectors.joining(",")); 
    System.out.println(outputMessage); 
} 
0

如何我解決它,但它是凌亂

int size=strArray.size(); 
int sum=0; 
int a=0; 
int b=0; 
int c=0; 
int d=0; 
int e=0; 

int aver=sum/size; 

for(int counter=0;counter<strArray.size();counter++){ 
    sum+=strArray.get(counter); 

     if (strArray.get(counter)<50){ 
     a++; 
     } 
     if (strArray.get(counter)<60 && strArray.get(counter)>=50 && strArray.get(counter)==50) 
     { 
     b++; 

     }if (strArray.get(counter)<70 && strArray.get(counter)>=60 && strArray.get(counter)==60){ 
     c++; 
     }if (strArray.get(counter)<80 && strArray.get(counter)>=70 && strArray.get(counter)==70){ 
     d++; 
     }if (strArray.get(counter)>=80 && strArray.get(counter)==80){ 
     e++;   
    } 
} 

      this.done.append("the average is: "+aver+ 
        "Maximim value:"+Collections.max(strArray)+ 
      "Minimum value"+Collections.min(strArray)+ 
      "\nNumber of level 4: " + e+"\nNumber of level 3: " 
      +d+"\nNumber of level 2: "+c+"\nNumber of level 1: "+b 
      +"\nNumber of level R: "+a); 

我的數組INT就被稱爲海峽數組,如果任何人弄糊塗了。

如果我在這個網站上,任何需要幫助的人都可以問我,我覺得我很痛苦,我不得不從google和youtube學習所有東西。

相關問題