import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.lang.*;
public class godmos{
private Double delet(StringBuffer r2){
String r=r2.toString();
String[] words = r.split("/",2);
Pattern p ,p1;
Matcher m ,m1;
p = Pattern.compile("\\d*$");
m = p.matcher(words[0]);
p1 = Pattern.compile("^\\d*");
m1 = p1.matcher(words[1]);
while (m.find() ){
String y1=m.group();
}
while ( m1.find()){
String y2=m1.group();
}
double tmp1 = Double.parseDouble(y1);
double tmp2 = Double.parseDouble(y2);
return tmp1/tmp2;
}
private Double doubleplus(StringBuffer r2){
String r=r2.toString();
String[] words1 = r.split("*",2);
Pattern p ,p1;
Matcher m ,m1;
p = Pattern.compile("\\d*$");
m = p.matcher(words1[0]);
p1 = Pattern.compile("^\\d*");
m1 = p1.matcher(words1[1]);
while (m.find() ){
String y1=m.group();
}
while ( m1.find()){
String y2=m1.group();
}
double tmp1 = Double.parseDouble(y1);
double tmp2 = Double.parseDouble(y2);
return tmp1*tmp2;
}
private Double plus(StringBuffer r2){
String r=r2.toString();
String[] words1 = r.split("+",2);
Pattern p ,p1;
Matcher m ,m1;
p = Pattern.compile("\\d*$");
m = p.matcher(words1[0]);
p1 = Pattern.compile("^\\d*");
m1 = p1.matcher(words1[1]);
while (m.find() ){
String y1=m.group();
}
while ( m1.find()){
String y2=m1.group();
}
double tmp1 = Double.parseDouble(y1);
double tmp2 = Double.parseDouble(y2);
return tmp1+tmp2;
}
private Double minus(StringBuffer r2){
String r=r2.toString();
String[] words1 = r.split("*",2);
Pattern p ,p1;
Matcher m ,m1;
p = Pattern.compile("\\d*$");
m = p.matcher(words1[0]);
p1 = Pattern.compile("^\\d*");
m1 = p1.matcher(words1[1]);
while (m.find() ){
String y1=m.group();
}
while ( m1.find()){
String y2=m1.group();
}
double tmp1 = Double.parseDouble(y1);
double tmp2 = Double.parseDouble(y2);
return tmp1*tmp2;
}
public String str1 = "5+7-9/9*2/4*3 ";
StringBuffer str0 = new StringBuffer(str1);
public StringBuffer calculate (StringBuffer str)
{
while(str.indexOf("/")!=-1 | str.indexOf("*")!=-1 ){
if(str.indexOf("/") < str.indexOf("*") && str.indexOf("/")!=-1)
{ int a1 = str.indexOf("/");
int a2 = a1+1;
int a3 = a1-1;
double tmp3=delet(str);
str.delete(a3,a2+1);
str.insert(a3,tmp3);
}
if(str.indexOf("*") < str.indexOf("/") && str.indexOf("*")!=-1)
{ int a4 = str.indexOf("*");
int a5 = a4+1;
int a6 = a4-1;
double tmp6=doubleplus(str);
str.delete(a6,a5+1);
str.insert(a6,tmp6);
}
}
while(str.indexOf("+")!=-1 | str.indexOf("-")!=-1 ){
if(str.indexOf("+") < str.indexOf("-") && str.indexOf("+")!=-1 )
{ int a11 = str.indexOf("+");
int a21 = a11+1;
int a31 = a11-1;
double tmp31=plus(str);
str.delete(a31,a21+1);
str.insert(a31,tmp31);
}
if(str.indexOf("-") < str.indexOf("+") && str.indexOf("-")!=-1)
{ int a41 = str.indexOf("-");
int a51= a41+1;
int a61 = a41-1;
double tmp61=minus(str);
str.delete(a61,a51+1);
str.insert(a61,tmp61);
}
}
return str;
}
StringBuffer f1 = calculate(str0);
public static void main (String[] args) {
godmos gm = new godmos();
System.out.print(gm.f1);
}
}
Andry KIT
5 уровень
привет.помогите.почему double tmp1 = Double.parseDouble(y1); и double tmp2 = Double.parseDouble(y2); не выдят переменную y1 и y2 то есть почему эти строки визивают ошибку
Обсуждается
Комментарии (1)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ksenia Volkova Java Developer в DXC Master
27 августа 2021, 10:53
Потому что если m.find() и/или m1.find() ничего не найдут, твои переменные останутся неинициализированными.
0