2010-10-30 21 views
10

Ho compilato ed eseguito correttamente il codice sorgente omettendo il campo totalFee. Come scrivo totalFee in questo programma in modo che calcoli accuratamente la tariffa totale per ogni lavoro (tasso * orario)? Sotto, vedrai che ho provato ad usare un metodo; che ha generato l'errore CS0051 (accessibilità incoerente: il tipo di parametro "Job" è meno accessibile del metodo "AddJobs.TotalPay (Job)").Errore CS0051 (accessibilità incoerente: il tipo di parametro "Lavoro" è meno accessibile del metodo "AddJobs.TotalPay (Job)")

Questo codice sorgente è in risposta alla seguente assegnazione:

". Progettare una classe di lavoro per Harold Home Servizi La classe contiene quattro campi-lavoro con dati descrizione (ad esempio,‘lavare le finestre’) , ora in ora per completare il lavoro (per esempio , 3.5), tariffa oraria applicata per il lavoro (ad esempio $ 25,00) e costo totale per il lavoro (ore orari tariffa oraria). Includi proprietà per ottenere e imposta ogni campo eccetto il costo totale: quel campo sarà di sola lettura e il suo valore verrà calcolato ogni volta o la tariffa oraria o il numero di ore è impostato. Sovraccarico dell'operatore + in modo che sia possibile aggiungere due lavori . La somma di due lavori è un nuovo lavoro contenente le descrizioni di entrambi i lavori originali (uniti da "e"), la somma del tempo in ore per i lavori originali e la media della tariffa oraria per i lavori originali. Scrivi una funzione Main() che dimostra che tutti i metodi funzionano correttamente. Salvare il file come DemoJobs.cs "

Microsoft Visual C# ® 2008, Introduzione alla programmazione orientata agli oggetti, 3e, Joyce Farrell

Ecco il codice sorgente:.

using System; 

public class AddJobs 
{ 
    private double totalFee; 

    public AddJobs(double totalFee) 
    { 
    TotalFee = totalFee; 
    } 

    public static void Main() 
    { 
    Job job1 = new Job("washing windows", 5.00, 25.00); 
    Job job2 = new Job("walking a dog", 3.00, 11.00); 
    Job job3; 
    job3 = job1 + job2; 

    Console.WriteLine("The first job's description: {0} \nTotal time needed to complete the job: {1} hours \nHourly fee: {2} per hour", job1.Description, job1.Time, job1.Rate.ToString("C")); 
    TotalPay(job1); 

    Console.WriteLine("The second job's description: {0} \nTotal time needed to complete the job: {1} hours \nHourly fee: {2} per hour", job2.Description, job2.Time, job2.Rate.ToString("C")); 
    TotalPay(job2);   

    Console.WriteLine("The third job's description: {0} \nTotal time needed to complete the job: {1} hours \nHourly fee: {2} per hour", job3.Description, job3.Time, job3.Rate.ToString("C")); 
    TotalPay(job3); 
    } 

    public static void TotalPay(Job method) 
    { 

    double totalFee = Job.rate * Job.time; 
    Console.WriteLine("The total fee is: {0}", TotalFee.ToString("C")); 
    } 
} 

class Job 
{ 

    public Job(string description, double time, double rate) 
    { 
    Description = description; 

    Time = time; 

    Rate = rate; 
    } 

    public static Job operator+(Job first, Job second) 
    { 
    string newDescription = first.Description + " and " + second.Description; 

    double newTime = first.Time + second.Time; 

    double newRate = (first.Rate + second.Rate)/2; 

    double newTotalFee = newRate * newTime; 

    return(new Job(newDescription, newTime, newRate)); 
    } 

    public string Description {get; set;} 
    public double Time {get; set;} 
    public double Rate {get; set;} 
} 
+0

Ciao e benvenuto su Stack Overflow. Un suggerimento amichevole, utilizzare il tasto 010101 sulla barra degli strumenti dopo aver selezionato tutto il codice per rientrare di quattro spazi, in questo modo anche le dichiarazioni vengono formattate come codice. –

risposta

22

non è stato specificato un modificatore di visibilità per la classe, il che lo rende interno

provare a cambiare questa linea:.

class Job 

a questo:

public class Job 
0
using System; 

public class AddJobs 
{ 
    private double totalFee; 



    public AddJobs(double TotalFee) 
    { 
     totalFee = TotalFee; 
    } 

    public static void Main() 
    { 
     Job job1 = new Job("washing windows", 5.00, 25.00); 
     Job job2 = new Job("walking a dog", 3.00, 11.00); 
     Job job3; 
     job3 = job1 + job2; 

     Console.WriteLine("The first job's description: {0} \nTotal time needed to complete the job: {1} hours \nHourly fee: {2} per hour", job1.Description, job1.Time, job1.Rate.ToString("C")); 
     TotalPay(job1); 

     Console.WriteLine("The second job's description: {0} \nTotal time needed to complete the job: {1} hours \nHourly fee: {2} per hour", job2.Description, job2.Time, job2.Rate.ToString("C")); 
     TotalPay(job2); 

     Console.WriteLine("The third job's description: {0} \nTotal time needed to complete the job: {1} hours \nHourly fee: {2} per hour", job3.Description, job3.Time, job3.Rate.ToString("C")); 
     TotalPay(job3); 
    } 

    public static void TotalPay(Job method) 
    { 

     double totalFee = method.Rate * method.Time; 
     Console.WriteLine("The total fee is: {0}", totalFee.ToString("C")); 
    } 
} 

class Job 
{ 

    public Job(string description, double time, double rate) 
    { 
     Description = description; 

     Time = time; 

     Rate = rate; 
    } 

    public static Job operator +(Job first, Job second) 
    { 
     string newDescription = first.Description + " and " + second.Description; 

     double newTime = first.Time + second.Time; 

     double newRate = (first.Rate + second.Rate)/2; 

     double newTotalFee = newRate * newTime; 

     return (new Job(newDescription, newTime, newRate)); 
    } 

    public string Description { get; set; } 
    public double Time { get; set; } 
    public double Rate { get; set; } 
} 
1

Hai ragione Lasse V. Karlsen si ha bisogno di aggiungere un modificatore di accesso pubblico alla parte anteriore della classe Job. Osservando il caso che un punto del metodo "A" sta mostrando l'errore di sintassi che indica che la persona stava tentando di accedere al campo privato. Quando la persona dovrebbe provare ad accedere alla proprietà del campo invece di accedere a un campo che era un campo privato.

pubblico TotalPay static void (metodo di lavoro) { A: A: doppio totalFee = Job.rate * Job.time; Console.WriteLine ("La tariffa totale è: {0}", TotalFee.ToString ("C")); } }

Ci sono stati diversi luoghi con errori simili che seguono solo tutti gli "A" che usano System;

classe pubblica AddJobs { private double totalFee;

    //A: 
public AddJobs(double TotalFee) 
{ //A: 
    totalFee = TotalFee; 
} 

public static void Main() 
{ 
    Job job1 = new Job("washing windows", 5.00, 25.00); 
    Job job2 = new Job("walking a dog", 3.00, 11.00); 
    Job job3; 
    job3 = job1 + job2; 

    Console.WriteLine("The first job's description: {0} \nTotal time needed to complete the job: {1} hours \nHourly fee: {2} per hour", job1.Description, job1.Time, job1.Rate.ToString("C")); 
    TotalPay(job1); 

    Console.WriteLine("The second job's description: {0} \nTotal time needed to complete the job: {1} hours \nHourly fee: {2} per hour", job2.Description, job2.Time, job2.Rate.ToString("C")); 
    TotalPay(job2); 

    Console.WriteLine("The third job's description: {0} \nTotal time needed to complete the job: {1} hours \nHourly fee: {2} per hour", job3.Description, job3.Time, job3.Rate.ToString("C")); 
    TotalPay(job3); 
} 

public static void TotalPay(Job method) 
{ 

    double totalFee = method.Rate * method.Time; 
    Console.WriteLine("The total fee is: {0}", totalFee.ToString("C")); 
} 

}

public class lavoro {

public Job(string description, double time, double rate) 
{ 
    Description = description; 

    Time = time; 

    Rate = rate; 
} 

public static Job operator +(Job first, Job second) 
{ 
    string newDescription = first.Description + " and " + second.Description; 

    double newTime = first.Time + second.Time; 

    double newRate = (first.Rate + second.Rate)/2; 

    double newTotalFee = newRate * newTime; 

    return (new Job(newDescription, newTime, newRate)); 
} 

public string Description { get; set; } 
public double Time { get; set; } 
public double Rate { get; set; } 

}

+0

Benvenuti in Stackoverflow. Ti dispiacerebbe ripulire la formattazione della tua risposta? – Henrik

3

significa u stanno accedendo una classe che non è pubblica .. rendere la classe pubblico come questo

public class Job 
{ 

    public Job(string description, double time, double rate) 
    { 
    Description = description; 

    Time = time; 

    Rate = rate; 
    } 
Problemi correlati