Я думаю, что когда-либо вы это сделаете, это будет связано с множеством условных утверждений. Но для отдельных операций, например, в ваших примерах, вы можете ограничить это до 4 операторов с чем-то вроде
String math = "1+4";
if (math.split("+").length == 2) {
//do calculation
} else if (math.split("-").length == 2) {
//do calculation
} ...
. Это становится намного сложнее, если вы хотите иметь дело с несколькими операциями типа «4 + 5 * 6 ".
Если вы пытаетесь построить калькулятор, я бы перегружал каждую секцию вычисления отдельно (каждый номер или оператор), а не как одну строку.
Мы / аналогичная ситуация на работе.
решение мы используем:
, Мы не видели проблем (помимо нормальных Crystal) с этой установкой.
На самом деле это довольно просто. просто добавьте следующие ссылки на свой проект MVC:
используйте метод действия, как показано ниже:
C #:
с использованием CrystalDecisions.CrystalReports .Engine;
общедоступный отчет ActionResult ()
{
ReportClass rptH = new ReportClass ();
rptH.FileName = Server.MapPath ( "[reportName] .rpt");
rptH.Load ();
rptH.SetDataSource ([datatable]);
Stream stream = rptH.ExportToStream (CrystalDecisions.Shared. ExportFormatType.PortableDocFormat);
файл возврата (поток, «приложение / pdf»);
}
В.Б.NET:
Импортирует CrystalDecisions.CrystalReports.Engine
Отчет публичной функции () как ActionResult
Dim rptH As New ReportClass ()
rptH.FileName = Server .MapPath ("[reportName] .rpt")
rptH.Load ()
rptH.SetDataSource ([datatable])
Тусклый поток как IO.Stream = rptH.ExportToStream ( CrystalDecisions.Shared.ExportFormatType.PortableDocFormat)
Возвращаемый файл (поток, «приложение / pdf»)
Конечная функция