[英]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.