}
}
/*
Задача:
Найти разность между двумя длинами, причем первая не больше второй.
Модель вида:
- массив входных строк;
- строка-результат.
Функции контроллера:
- проверка входных строк,
- корректировка при возможности (например, оба дабла положительных, но первый больше второго),
- вызов логики,
- подготовка вида.
Модель данных: объект, содержащий два положительных дабла d1 и d2, d1 <= d2.
Логика:
- main workflow: расчет разности длин;
- alternative: сообщение о формате исходных данных.
*/
// CalcModel.java
public class CalcModel {
private double d1= 1.0, d2= 1.0;
public CalcModel() {
}
public CalcModel(double d1, double d2) {
this.d1= d1;
this.d2= d2;
}
public double calc() {
return d2-d1;
}
}
// Controller.java
public class Controller {
public Controller() {
}
//transforming data to standard form if possible
public void start(View v) {
try {
double h1 = Double.valueOf(v.getArgs()[0]).doubleValue();
double h2 = Double.valueOf(v.getArgs()[1]).doubleValue();
if(h1<=0 || h2<=0)
v.setRes("Wrong args!!!\nNeeded 2 positive double numbers.");
else { //possible!
if(h1>h2) {
double h=h1; h1=h2; h2=h; //correction
}
CalcModel cm = new CalcModel(h1,h2);
v.setRes("Answer: " + cm.calc());
}
} catch(Exception e) {
v.setRes("Wrong args!!!\nNeeded 2 positive double numbers.");
}
}
}
// View.java
import java.io.*;
public class View {
private String args[];
private String res;
public View() {
}
public View(String ... arg) {
this.args=arg;
}
public View(InputStreamReader is) {
BufferedReader bistream = new BufferedReader(is);
try {
args= new String[2];
System.out.print("Input 1st double & press <Enter>: ");
args[0] = bistream.readLine();
System.out.print("Input 2nd double & press <Enter>: ");
args[1] = bistream.readLine();
} catch (IOException e) {
System.out.println("Input error: " + e);
}
}
public View(File f) throws IOException{
this(new InputStreamReader(new FileInputStream(f)));
}
public String[] getArgs() {
return args;
}
public String getRes() {
return res;
}
public void setRes(String res) {
this.res=res;
}
public void view() {
for(int i=0; i<args.length; i++){
System.out.println("arg["+ i+ "]: "+ args[i]);
}
System.out.println(res);
}
}
// View2File.java
import java.io.*;
public class View2File extends View {
String fName;
public View2File() {
super();
}
public View2File(String fName, String ... arg) {
super(arg);
this.fName=fName;
}
public View2File(String fName, InputStreamReader is) {
super(is);
this.fName=fName;
}
public View2File(String fName, File f) throws IOException{
super(f);
this.fName=fName;
}
public void view() {
try {
PrintStream ps = new PrintStream(new FileOutputStream (fName));
for(int i=0; i<super.getArgs().length; i++){
ps.println("arg["+ i+ "]: "+ super.getArgs()[i]);
}
ps.println(super.getRes());
} catch (IOException e) {
System.out.println("Output error: " + e);
}
}
}
// Runners.java
import java.io.*;
class Runners1 {
public static void main(String[] args) {
//part View
View v = new View(args);
//part MVC
Controller c = new Controller();
c.start(v);
v.view();
}
}
class Runners2 {
public static void main(String[] args) {
//part View
View v = new View("11", "10");
//part MVC
Controller c = new Controller();
c.start(v);
v.view();
}
}
class Runners3 {
public static void main(String[] args) {
//part View
View v = new View(new InputStreamReader(System.in));
//part MVC
Controller c = new Controller();
c.start(v);
v.view();
}
}
class Runners4 {
public static void main(String[] args) {
try {
//part View
View v = new View(new InputStreamReader(new FileInputStream
(new File("in.txt"))));
//part MVC
Controller c = new Controller();
c.start(v);
v.view();
} catch (IOException e) {
System.out.println("Input error: " + e);
}
}
}
class Runners5 {
public static void main(String[] args) {
//part View
View2File v = new View2File("out.txt", "0", "10");
//part MVC
Controller c = new Controller();
c.start(v);
v.view();
}
}
// SimpleMVC.java
public class SimpleMVC {
private View v;
public SimpleMVC() {
}
public SimpleMVC(View v) {
this.v=v;
}
public void start() {
Controller c = new Controller();
c.start(v);
v.view();
}
}
// SimpleMVCRunners.java
class Runners1SimpleMVC {
public static void main(String[] args) {
new SimpleMVC(new View(args)).start();
}
}
class Runners2SimpleMVC {
public static void main(String[] args) {
new SimpleMVC(new View("11", "10")).start();
}
}
class Runners5SimpleMVC {
public static void main(String[] args) {
new SimpleMVC(new View2File("out.txt", "30", "10")).start();
}
}
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.