への入力を複製するので、私たちのC#クラスのために、我々は5つのオブジェクトの配列を作成する必要があり、仕事の説明のための文字列
仕事の予想時間の2倍。
ループ配列
ユーザーが重複したジョブ番号を入力しないようにするには、私のループに必要です。これまでのコードはここまでです。このコードは機能しますが、重複するジョブ番号を許可します。
namespace JobDemo2
{
class Program
{
static void Main(string[] args)
{
Job[] jobbies = new Job[5];
int x;
int jobNum;
string customerName;
string description;
double hours;
const double RATE = 45.00;
for (x = 0; x < jobbies.Length; ++x)// creates array
{
GetJobData(out jobNum, out customerName, out description, out hours, jobbies);
jobbies[x] = new Job(jobNum, customerName, description, hours);
}
//Array.Sort(jobbies);
Console.WriteLine("The jobs, sorted, are: ");
for (x = 0; x < jobbies.Length; ++x) // prints the array values
{
DisplayJobs(jobbies[x]);
}
double totalRevenue = (jobbies[0].Hours + jobbies[1].Hours +
jobbies[2].Hours + jobbies[3].Hours + jobbies[4].Hours) * RATE;
Console.WriteLine();
Console.WriteLine("The total revenue projected is {0}", totalRevenue);
Console.ReadKey();
}
static void GetJobData(out int jobNum,
out string customerName, out string description, out double hours,
Job[] jobbies)
{
string inString;
Console.Write("Please enter a job number >> ");
inString = Console.ReadLine();
int.TryParse(inString, out jobNum);
Console.Write("Please enter the customer's name for this job >> ");
customerName = Console.ReadLine();
Console.Write("Please enter the job's description >> ");
description = Console.ReadLine();
Console.Write("Please enter the projected hours for the job >> ");
inString = Console.ReadLine();
double.TryParse(inString, out hours);
Console.WriteLine();
}
static void DisplayJobs(Job jobbies)
{
Console.WriteLine("{0, 5} {1, -10} {2, 6} {3, 8}",
jobbies.JobNumber, jobbies.Customer, jobbies.Description, jobbies.Hours);
}
}
class Job //object
{
private double hours;
private double price;
public const double RATE = 45.00;
public Job(int num, string cust, string desc, double hrs)
{
JobNumber = num;
Customer = cust;
Description = desc;
Hours = hrs;
}
public int JobNumber { get; set; }
public string Customer { get; set; }
public string Description { get; set; }
public double Hours
{
get
{
return hours;
}
set
{
hours = value;
price = hours * RATE;
}
}
public double Price
{
get
{
return price;
}
}
public override string ToString()
{
return (GetType() + " " + JobNumber + " " + Customer + " " +
Description + " " + Hours + " hours @" + RATE.ToString("C") +
" per hour. Total price is " + Price.ToString("C"));
}
public override bool Equals(Object e)
{
bool equal;
Job temp = (Job)e;
if (JobNumber == temp.JobNumber)
equal = true;
else
equal = false;
return equal;
}
public override int GetHashCode()
{
return JobNumber;
}
}
}
教師は、オブジェクトを比較する別のループの広告をクラスに提案しています。どのようなループのように見えるだろうか?ここで
は彼女のメールです:ループはブール変数を作成するための
ヘルプ。
あなたの配列をループして、情報を入力してbool変数をtrueに設定するようにユーザーに依頼します。もう1つのforループは、クラス内のequalsメソッドを呼び出して、配列内の各オブジェクトに入力したばかりのジョブを比較します。これは、オブジェクトとオブジェクトを比較する必要があるため、ほとんどの場合、オブジェクト全体に対してジョブ番号のインタジェクタを比較する必要があるためです。オブジェクトが等しい場合、boolはfalseに設定されます。
boolが間違っている間に、間違った番号を入力して再度入力するように伝えたいとします。ここでブール値をtrueに設定し、同じ値をループに戻して再度比較します。数字が偽のままである限り、ユーザーはこのwhileループで立ち往生します。彼らが正しい番号を入力すると、それは打ち切られます。
これまでに何を試しましたか? 'Equals'を呼び出すときにどんなエラーがありますか? – casiosmu
したがって、iveは次のようなforループを作成しようとしました。
for(x = 0; x <2; ++ x) { Equals(); } x <2の代わりにこれが間違っていることは分かっていますが、何が重複していないかをループする必要があり、Equalsメソッドに渡す必要がある内容がわかりません。私はここで構文がわからない。 – James
辞書を使ってみませんか?必要な場合は配列に変換できます。 –