私はC#でSSTFアルゴリズムを計算するためのコンソールプログラムを書いています。ディスクコントローラやオペレーティングシステム用のSSTFアルゴリズムは作成していません。値が合計に加算される最後の行で、コンパイラーはindex
変数に関するエラーを返します。そのためindex
、whileループの前に変数を宣言しましたが、コンパイラーはエラーを報告します。
static void Main(string[] args)
{
List<int> tracks = new List<int>();
Console.WriteLine(" enter the current track");
int key = Convert.ToInt32 (Console.ReadLine());
Console.WriteLine("enter the tracks's number and -1 to end.");
int track = Convert.ToInt32(Console.ReadLine());
while(track != -1)
{
tracks.Add(Convert.ToInt32(track));
track = Convert.ToInt32(Console.ReadLine());
}
int sum=0;
int count_of_tracks = tracks.Count;
int distance;
int minmum;
int first;
int index;
while (tracks.Count != 0)
{
first = tracks[0];
if (key > first)
minmum = key - first;
else
minmum = first - key;
for (int j = 1; j <= count_of_tracks; j++)
{
if (key > tracks[j])
{
distance = key - tracks[j];
if (minmum > distance)
{
minmum = distance;
index = j;
}
}
if (key < tracks[j])
{
distance = tracks[j] - key;
if (minmum > distance)
{
minmum = distance;
index = j;
}
}
}
sum = sum + (key - tracks[index]);
tracks.RemoveAt(index);
}
int seek_time = sum / count_of_tracks;
}
index
値が割り当てられない場合があります。コンパイラを満足させるには、デフォルト値を割り当てます。
int index = -1;
適切に処理したい場合は、次のようなものが必要です。
if(index >= 0)
{
sum = sum + (key - tracks[index]);
tracks.RemoveAt(index);
}
else
{
// Show / log error ...
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加