簡體   English   中英

計算數組程序Java中整數的出現

[英]Counting occurrences of integers in an array program java

我正在嘗試查找用戶提交給程序的所有整數的出現,到目前為止,這就是我所得到的。 它可以工作,但是我不認為這是合法的方法,有什么方法可以嘗試不使用list[10]=9999;來執行此操作list[10]=9999; 因為如果我不這樣做,它將顯示超出邊界的錯誤。

import java.util.*;

public class OccurrencesCount
{
   public static void main(String[] args) 
   {
   Scanner scan = new Scanner(System.in);

  int[] list = new int[11];

  //Accepting input.
  System.out.print("Enter 10 integers between 1 and 100: ");
  for(int i = 0;i<10;i++){
     list[i] = scan.nextInt();
     list[10] = 9999;
  }
  //Sort out the array.
  Arrays.sort(list);
  int count = 1;
  for(int i = 1;i<11;i++){
        if(list[i-1]==list[i]){
           count++;
        }
        else{
           if(count<=1){
              System.out.println(list[i-1] + " occurs 1 time.");
           }
           else{
              System.out.println(list[i-1] + " occurrs " + count + " times.");
              count = 1;
           }
        }
     }

}
}
import java.util.*;
class OccurrencesCount {
   public static void main(String[] args) {
   Scanner scan = new Scanner(System.in);
   int[] list = new int[101];
   System.out.print("Enter 10 integers between 1 and 100: ");
   for(int i = 0;i<10;i++) {
     int x = scan.nextInt();
     list[x]++;
  }
  for(int i = 1; i <= 100; i++) 
     if(list[i] != 0)
       System.out.println(i + " occurs " + list[i] + " times ");

    }
}

要存儲1到100之間的數字,您需要使用100個整數的列表,每個整數存儲其自身出現的次數。 更好的方法是使用地圖。

我個人認為這是一個完美的解決方案。 這意味着您可以像處理所有其他組一樣處理最后一組。 我唯一要做的更改是將行list[10] = 9999; for循環之外(沒有理由這樣做10次)。

但是,如果要使用長度為10的數組,則可以更改行

if(list[i-1]==list[i])

if(i < 10 && list[i-1]==list[i])

如果這樣做,您將不會從list[i]獲得ArrayIndexOutOfBoundsException ,因為當i == 10時, &&之后的表達式不會被求值。

如果您希望將其簽出,我可以使用ArrayList和Collections包而不是常規數組作為另一種口味。

import java.util.*;

public class OccurrencesCount {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        List<Integer> list = new ArrayList<>();

        //Accepting input.
        System.out.print("Enter 10 integers between 1 and 100: ");
        for (int i = 0; i < 10; i++) {
            list.add(scan.nextInt());
        }

        Collections.sort(list);
        Integer prevNumber = null;
        for (int number : list) {
            if (prevNumber == null || prevNumber != number) {
                int count = Collections.frequency(list, number);
                System.out.println(number + " occurs " + count + (count > 1 ? " times." : " time."));
            }
            prevNumber = number;
        }
    }
}

我弄清楚了伙計們,只改變了條件內的一些小東西,一切都進行得很順利! 謝謝您的幫助! 現在,我只需要找到一種方法來限制輸入超過100。

import java.util.*;
 public class CountOccurrences
 {
 public static void main(String[] args) 
 {
  Scanner scan = new Scanner(System.in);

  int[] list = new int[10];

  //Accepting input.
  System.out.print("Enter 10 integers between 1 and 100: ");
  for(int i = 0;i<=9;i++){
     list[i] = scan.nextInt();
  }
  //Sort out the array.
  Arrays.sort(list);
  int count = 1;
  for(int i = 1;i<=10;i++){
        if(i<=9 && list[i-1]==list[i]){
           count++;
        }
        else{
           if(count<=1){
              System.out.println(list[i-1] + " occurs 1 time.");
           }
           else{
              System.out.println(list[i-1] + " occurrs " + count + " times.");
              count = 1;
           }
        }
     }

 }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM