2014-11-25 5 views
0

В моей программе Java у меня есть ArrayList. То, что я хочу сделать, это распечатать номер в нижней части, что будет говорить «х количество людей прошло»Java ArrayList: использование ArrayList для сообщения печати

System.out.println = ("The amount of people that have more than 40 marks is " + x); 

Можно ли подсчитать, сколько чисел марок будет больше, чем 40, если есть неустановленные количество введенных знаков, используя ArrayList?

public class test { 

/** 
* @param args the command line arguments 
*/ 
public static void main(String[] args) { 

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

    Scanner input = new Scanner(System.in); 
    // Create a new scanner to use in java 

    int[] range = { 0,29,39,69,100 }; 
    // A new array is created with the grade boundaries 
    int[] inRange = new int[boundary.length - 1]; 
    // Indexed from 0 to n-1 

    int markIn; 
    // New integer markIn 
    do { 
    // This do-while loop calculates the expression after the statements below are exectued at least once 
     System.out.println("Enter Mark(s):"); 
     // Wait for user input 
     markIn = input.nextInt();  
     // markInp value is set as the value entered by user 
     marks.add(markIn); 

     for (int a=1 ; a<boundary.length ; a++) 
     // for loop will take the variable 'a' and compare it with varibale 'boundary', when the condition is satisfied that value of 'a' increments by 1 
      if (range[a-1] <= markInp && markInp <= range[a]) { 
      // The boundaries will define the upper and lower limits of the markInp 
       inRange[a-1]++; 
       //inRange is incremented by 1 
       break; 
       //Exit if 
      } 
    } while (markIn <= 100); 
    // When the mark exceeds 100, the loop is stopped 

    System.out.println(marks); 

    input.close(); 
} // Close the Scanner input 
} 
+0

Итак, в чем именно вопрос? – Mureinik

+0

Мой вопрос: Можно ли рассчитать, сколько номеров меток будет больше 40, если есть неопределенное количество помеченных знаков, используя ArrayList? –

ответ

0

Вы можете сделать что-то вроде:

int result = 0; 

if(marks != null) 
{ 
    Collections.sort(marks); 
    for(int i=0;i<marks.size();i++) 
    { 
     if(marks.get(i) > 40) 
     { 
      result = marks.size() - i; 
      break; 
     } 
    } 
} 

марок является ArrayList и результат желателен выход.

0

Если массив уже отсортирован, как вы показываете в вашем примере, то вам просто нужно сделать простой поиск, откуда вы начинаете видеть конкретный счет, а затем взять длину массива и вычитание позиции элемента, который пришел из вашего поиска.

Если массив не отсортирован, отсортируйте его и выполните поиск.

+0

У массива может быть любое количество меток, вводимых через консоль, нет ли способа сравнить массив с чем-то вроде, например, если какой-либо из элементов внутри был более 39 и меньше 100? –

+0

@ nmehta_001 - это граница, уже известная до ввода ввода? Если да, то вы просто проходите и добавляете вход в соответствующий список всякий раз, когда генерируется вход, и вы можете сравнивать с использованием наборов вместо массивов. – CBredlow

Смежные вопросы