配列に一意の番号が存在する回数を数えようとしています。使用されるインデックスの量は、入力された要素の量によって異なります。最初の値は考慮されていません。ループがチェックしarrays.length -1
ているため、3 を 2 回入力したにもかかわらず、数値 3 がカウント 1 として表示されます。これを修正する最善の方法は、使用しないループを実行することだとわかっていますarrays.length -1
が、次のようにエントリを隣のエントリと比較することはできません。if(a[i] == a[i + 1] && a[i] != 0)
値が複数回出現するかどうかを確認します。カウントされた対応する配列値を使用して count メソッドにカウント値を格納し、メソッドの外側で for ループを実行するのが最善だと思いますか? 私はJavaが初めてなので、それを行う方法がわかりません。いくつかのガイダンスがあります:)
import java.util.Scanner;
public class Prac_ExeOne
{
static int count = 1;
static int numberUsed = 0; // static its used to show its a class wide variable and there is only one copy.
static int[] Array = new int [50]; // the maximum elements inside the array that can be used is 10;
int size;
public int fillArray(int[] a)
{
System.out.println("Enter up to " + a.length + " nonnegative numbers.");
System.out.println("Mark the end of the list with a negative number.");
Scanner keyboard = new Scanner(System.in);
int next;
int index = 0;
next = keyboard.nextInt();
while ((next >= 0) && (index < a.length ))
{
numberUsed++;
a[index] = next;
index++;
// Print out each value of next
System.out.println(next);
next = keyboard.nextInt();
//System.out.println("Number of indexes used" + numberUsed);
}
keyboard.close(); // close the keyboard so it can't continue to be used.
return index;
}
public int[] sort(int[] arrays)
{
for(int i = 0;i < arrays.length -1 ;i++ )
{
int store = 0;
// Move Larger Values to the right.
if (arrays[i + 1 ] < arrays[i])
{
store = arrays[i];
arrays[i] = arrays[i + 1];
arrays[i + 1] = store;
}
// Sort swapped smaller values to the left.
for(int j = i; j > 1; j--)
{
if (arrays[j] < arrays[j - 1])
{
store = arrays[j];
arrays[j] = arrays[j - 1];
arrays[j - 1] = store;
}
}
}
return arrays;
}
public void count(int[] a)
{
//for each element in array go through if conditons.
System.out.println("N " + "Count");
for(int i = 0;i < a.length -1;i++)
{
if(a[i] == a[i + 1] && a[i] != 0)
{
count++;
}
if(a[i] != a[i+1])
{
count = 1;
}
if (a[i] != 0)
{
System.out.println(a[i] + " " + count);
}
}
}
public static void main(String[] args)
{
Prac_ExeOne score = new Prac_ExeOne();
score.fillArray(Array);
score.sort(Array);
score.count(Array);
}
}
入力:
Enter up to 50 nonnegative numbers.
Mark the end of the list with a negative number.
3
3
2
2
-2
出力:
N Count
3 1
2 2
2 1
望ましい結果:
一言で言えば、プログラムで値を正しくカウントしてから、N の下の左側に値を表示し、カウントの下の右側の配列にその回数を表示する必要があります。