Доброго времени суток.
Помогите, пожалуйста, перевести из С++ в Java:
Программа читает Название Фильма, Директора, Продолжительность и Качество.
Спасибо!
Код:
#include <cstdlib>
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
class Movie{
public:
Movie (string ttl="NONE", string d="NONE", int t=0.0, int q=0.0) : title(ttl), director(d), time(t), quality(q){};
virtual ~Movie(){};
void setTitle (const string& ttl) { title = ttl;}; // inline
void setDirector (const string& d) { director = d;};
void setTime (int t = 0 ){ time = t;};
void setQuality (int q = 0) { quality = q;};
virtual void display()const;
virtual void getData (ifstream& fin);
static bool readFromFile (string fname, Movie* Movies[], int n);
protected:
string title;
string director;
int time; // in minutes
int quality; // 0 (bad) to 5 (tops)
};
class Foreign : public Movie{
public:
Foreign (string l="NONE") : language(l){}
~Foreign(){};
void setLanguage (const string& l) {language = l;}; // inline
virtual void display() const;
virtual void getData (ifstream& fin);
private:
string language;
};
class Revised : public Movie{
public:
Revised (string c="NONE") : changes(c){}
~Revised(){};
void setChanges(const string& c){changes = c;}; //inline
void setRevisedTime(int r = 0){revisedTime = r;};
void display()const;
void getData(ifstream& fin);
private:
int revisedTime;
string changes;
};
//====================================MOVIE
void Movie::getData(ifstream& fin){
string line;
getline(fin, line);
setTitle(line);
getline(fin, line);
setDirector(line);
getline(fin, line);
int a = atoi (line.c_str()); // string to integer
setTime(a);
getline(fin, line);
a = atoi (line.c_str());
setQuality(a);
}
void Movie::display() const{
cout << "Title: " << title << endl;
cout << "Director: " << director << endl;
cout << "Time: " << time << " mins" << endl;
string stars (quality, '*'); // for printing *-rating
cout << "Quality: " << stars << endl;
}
//====================================FOREIGN
void Foreign::display() const{
Movie::display(); // using BASE class data to display Title, Director, Time, Quality
cout << "Language: " << language << endl;
}
void Foreign::getData (ifstream& fin){
Movie::getData(fin); // using BASE class data to set Title, Director, Time, Quality
string lang;
getline(fin, lang); //getting foreign language
setLanguage(lang);
}
//====================================REVISED
void Revised::display()const{
Movie::display(); // using BASE class data to display Title, Director, Time, Quality
cout << "Revised time: " << revisedTime << " mins" << endl;
cout << "Changes: " << changes << endl;
}
void Revised::getData(ifstream& fin){
Movie::getData(fin); // using BASE class data to set Title, Director, Time, Quality
string revised;
getline(fin, revised);
string changed;
getline(fin, changed);
int a = atoi(revised.c_str()); // string to integer
setRevisedTime(a);
setChanges(changed);
}
bool Movie::readFromFile(string fname, Movie *Movies[], int n){
ifstream fin(fname.c_str()); // reading file "inF.txt"
int next = 0;
string line;
while(getline(fin, line) && next < n){ // n - number of Movies in "inF.txt" file
if (line == "Movie"){
Movie *m = new Movie(); // create a new Movie object
m -> getData(fin); // read the data: Title, Director, Time, Quality
Movies[next] = m; // store in the array Movies[].
} else if (line == "Foreign"){ // create a new Foreign object
Movie *f = new Foreign();
f -> getData(fin);
Movies[next] = f;
} else if (line == "Revised"){ // create a new Revised object
Movie *r = new Revised();
r -> getData(fin);
Movies[next] = r;
} else {
return false; // movie, foreign, revised - not found.
}
next++;
}
fin.close();
return true;
}
int main(){
const unsigned n = 10;
Movie *Movies[n];
if(!Movie::readFromFile("inF.txt", Movies, n)){
cout << "Unable to read getData file --> exiting!! Press Enter." << endl;
exit (EXIT_FAILURE);
}
// display to screen
for (unsigned i=0; i < n; ++i){
Movies[i] -> display();
cout << endl;
}
cout << "\nThank you for visiting our Video shop!\n";
return EXIT_SUCCESS;
}