Merhaba, umarım iyisinizdir. Basit matematik işlemlerinin olduğu bir sınıf var bunu cmdden parametre olarak gönderip string olarak okuyorum. Böylece satırlarına erişebililiyorum. Operatorleri tipine göre ayırıp onların sayımını yapmam gerekiyor fakat regexte sorun yaşıyorum. Çok fazla regex kodu denememe rağmen halledemedim ve kafayı yemek üzereyim. regex "+" = hata veriyor. Kaçış ifadesi istiyor. regex "\+" = hata veriyor yine kaçış ifadesi istiyor neden anlamadım. regex "\\+" = Çalışıyor ama bütün + ları buluyor. + ve ++ bunlar farklı tür operatörler ve birbirinden ayrı saymam gerekiyorr. Dediğim gibi regex üzerinde çalıştım fakat uygun bir şey bulamadım.
Benim main fonksiyon kodlarım = public static long tekliFonk(String line, String x) { Matcher matcher = Pattern.compile(String.valueOf(x)).matcher(line); int res = 0; while (matcher.find()) { res++; } return res; }
public static void main(String[] args) throws IOException {
int tekli=0;
String file= (args[0]); FileReader fReader = new FileReader(file); String line; BufferedReader bReader=new BufferedReader(fReader); while((line = bReader.readLine())!=null) { tekli +=tekliFonk(line,"\\+"); } Ayrıştırmaya çalıştığım kod bloğu =
public class Lexicel { public int x; public int y; public Lexicel(int x,int y) { this.x = x; this.y = y; } /* * * x*x + y*y // i�lemi x > 0 ve y > 0 */ public int x2y2() { return x * x + y * y; } /* * Karak�k i�lemi yapan fonksiyon * karakok(x*x + y*y) */ public double karakok() { return Math.sqrt((double)x2y2()); } // log2(x/++y) public double log2() { ++y; return Math.log(((double)x)/y); } @Override public boolean equals(Object obj) { if(obj != null && obj instanceof Lexicel) { return ((Lexicel)obj).x == this.x && ((Lexicel)obj).y == this.y; } return false; } Çıkış ekranı şöyle olmalı = Operatör bilgisi = Tekli operator = 1 İkili Op. = 6 Sayısal Op. = 7 İkişkisel Op. = 3 Mantıksal Op. = 2 Operand bilgisi : Toplam operand sayısı: 23; yaşadığım regex problemini çözebilirsek devamını ben yazabilirim. Teşekkürler |
Bildirim