From e391ec2a705674652605f303b94fc593db59b8fb Mon Sep 17 00:00:00 2001 From: zhwu Date: Sun, 30 Sep 2018 08:21:25 +0300 Subject: [PATCH] Assignment Finished --- bin/StringCalculator.class | Bin 405 -> 3592 bytes bin/StringCalculatorException.class | Bin 303 -> 484 bytes bin/StringCalculatorTest.class | Bin 505 -> 1219 bytes src/StringCalculator.java | 150 +++++++++++++++++++++++++++- src/StringCalculatorException.java | 6 +- tests/StringCalculatorTest.java | 38 ++++++- 6 files changed, 189 insertions(+), 5 deletions(-) diff --git a/bin/StringCalculator.class b/bin/StringCalculator.class index a937b0c43633d36f133837cd90ddd10fb14ac782..aae354ffe5aace2b189e28f5ab28f3422dc14090 100644 GIT binary patch literal 3592 zcmaJ@U2GKB75?tMyPnzg+UyT&vH|18{21E=2a-B;owx)7)YSYHN@_v~!+Nk6uVyz~bTAR_?zX5NLX`;1s+;0kyh&zd&fSJ8DOv&>VvS zQ((bx!LfH%Cy&_Web$kpEsz{`^Hy=cRW9gxZ87AH7b^PQY+rPttkF?{^y=X{?m%mx zd&opeKtxTXsdw<86U8EA3_R2jWuP6y!&od3E!(A{mA9WR76mrUV{{%jbC)7$M~8u> zjebs7JbN;RES3?CTP3mSU~9qc+s#aPL}FW$0|u50ESeq8rfQ)$YL`u{6lmKwZf6Tl zsp@4bermFXN-oUk$J-Go)c8f|A2|L?6i;KbflUI5I#EN8XOG$C7@k3bs7hA3Vsp*FR@QKUuwLx<%hbe| z1=@3 zfpDc%EHJ@c^HKZU9B#?bBJ7P}AHK$L?c-Ie$Z~I}>EJ95bRRJBEQ4-(*J{qNj1{f;K@gC-tSL##Y|MN{IP2rc zvxsodHAJuauVZ{R`HS>QITk3O6$?1ysX&5HZZ=+}UK&vEhn`Y{sz0Rq!>YeY^&6_+ zRQ-|OWHPyM8g04gJ6Li9og>K=*RU!Rokn-^5k98TH;u=7lN;WIsRpOi?%rwSdXt06 z4ctU=w7)ss{1)x^(69b!p!A2sz1OjEa0;Edn0l(`2DXg&*0<3*O=!E)8909=3<$cTAypl#6s(Ht(lf&avER#30g9(zH}Msnw{kS!1R>-d8UOJ zwQ3#jg7gC76-zZ({_f$mGc5$%ADY7QTzn=VjaZwhLr#aT;NLSOtzcG?C1FQ$g6KcCv7elg60LSz-GeHmGD$8gXQPW2pwjk@<`@s+j4>VIBT# z4%4A@_%IK{{q;iuw@WUg^WM2T%#^fW$C1D%4;^1jq9e$`vB zi7jIro5cuH^wLH@i*N=H;T$sf5fTMjS6h;ecpiHR=arG-yC>cnpH{nrYHq|efHJ8mkt1jaNEk`k;25^#V&CF#x zE9W%p;HLZ|XJ;whlD}hqCy4C>IgM{nY84TA8ZUCk0%mThza!2({RZc`BhGBSg_o$8 zV9tJtmnkKgwLmY$9MvQ_Ec$VQR^rS-u$Ca>ft3V#53D4~eqbd<{sX;*WVnaa#{>ff$?3=9k=3?dV`^d=TbuyOJ*urjbsoRB#A7>nxUx2)Rr3=B*Rj37ZE z$qrPj52P7^G^^Hj29AwD1``7pkOWDC*xW#p2ciH-^8$H{415gyKoX?c3`jG9)G@CC dkw`k(!8*ktvQV8M75oAWfu4lJV-<>6kPNG zJx9+GU2{~@+=I_;rQ=%(Y? z;8L~}F@oD_56f7p9@|3gPw4S3i|3XdYU)bwGr`|S1TvTyxPT-ZSdfW<8_4E?C;-yDKprClA6OMX06vlp&j0`b diff --git a/bin/StringCalculatorTest.class b/bin/StringCalculatorTest.class index d44b83f48579a95c814a0008fdfcca590443d2de..691b08f3d83da4d8ec19a361d201ce856d0a9b7a 100644 GIT binary patch literal 1219 zcmZvb%TE(g6vn?>9vuc0s8B5Lr?fCbZHo^C5kx_>g7Oq)Gc64cDQzrMCT;QB+-PO8{^KMJ9qj|7{5EG2?=pCzjMyL_dDm@bLZRN&qn~pu^mJ}p=H%8xrN<1 zC!a0n9j{ng%N=+@R4X*?IZvH<-YM+Hmot00tfx>rRH3c` zHKaQc6_C#mbP28GBA>vq3AiDTP*NwQ@U8%jqjCNPFzl40orV9z*$6CzO%EV z&>Br2wo~)LX^^wEuiT^VT8Gq(?(7pAg<04Ydn81>J&PLBC*7a83{vj0h~jnBcr1DHs=A z6kHZu5ljiD1v7%{f*XQ)!7agUL0YgRxF=WN-Rs%&q>Tn*AFf! z%FIi*)(o56!_?&fw1g1|85r1v1a~k9Zv?WK7`T8W7m#LP;ACJ0vbcdP9*8O+%?so) LGDreRCI%@0z=a~_ diff --git a/src/StringCalculator.java b/src/StringCalculator.java index 487916b..549d2a4 100644 --- a/src/StringCalculator.java +++ b/src/StringCalculator.java @@ -1,9 +1,153 @@ - public class StringCalculator { + private StringCalculatorException stringCalculatorException; + public int add(String numbersStr) { // Returns the sum of the numbers given in numbersStr + boolean correctStr = true; + int sum = 0, sum1 = 0, sum2 = 0; + int sum11 = 0, sum12 = 0, sum21 = 0, sum22=0; - // not yet implemented - return 0; + String printStr = numbersStr.replaceAll("\n","\\\\n"); + System.out.println("The input string is: \"" + printStr + "\""); + + if (numbersStr =="") + sum = 0; + else + { + int count = numbersStr.length() - numbersStr.replaceAll(",","").length(); + //check how many "," in the numberStr + switch (count) { + case 0: //one number + try { + sum = Integer.parseInt(numbersStr); + } catch (NumberFormatException e) { + correctStr = false; + stringCalculatorException = new StringCalculatorException("invalid input (not numbers): " + numbersStr); + } + if (sum < 0) { + correctStr = false; + stringCalculatorException = new StringCalculatorException("negative numbers" + numbersStr); + } + break; + case 1: //two or more numbers + String[] parts = numbersStr.split(","); + String firstnum = parts[0]; + String secondnum = parts[1]; + if (firstnum.equals( "\n") || secondnum.equals( "\n")) { + correctStr = false; + stringCalculatorException = new StringCalculatorException("invalid input: \\n"); + } else + { + int count1 = firstnum.length() - firstnum.replaceAll("\n","").length(); + //check how many "\n" in the numberStr + switch (count1) { + case 0: //one number + try { + sum1 = Integer.parseInt(firstnum); + } catch (NumberFormatException e) { + correctStr = false; + stringCalculatorException = new StringCalculatorException("invalid input (not numbers): " + firstnum); + } + if (sum1 < 0) { + correctStr = false; + stringCalculatorException = new StringCalculatorException("negative numbers: "+ firstnum); + } + break; + case 1: + String[] twoparts = firstnum.split("\n"); + String firstpart = twoparts[0]; + String secondpart = twoparts[1]; + try { + sum11 = Integer.parseInt(firstpart); + } catch (NumberFormatException e) { + correctStr = false; + stringCalculatorException = new StringCalculatorException("invalid input (not numbers): " + firstpart); + } + if (sum11 < 0) { + correctStr = false; + stringCalculatorException = new StringCalculatorException("negative numbers: "+ firstpart); + } + try { + sum12 = Integer.parseInt(secondpart); + } catch (NumberFormatException e) { + correctStr = false; + stringCalculatorException = new StringCalculatorException("invalid input (not numbers): " + secondpart); + } + if (sum12 < 0) { + correctStr = false; + stringCalculatorException = new StringCalculatorException("negative numbers:" + secondpart); + } + sum1 = sum11 + sum12; + break; + default: + correctStr = false; + stringCalculatorException = new StringCalculatorException("invalid input: too many \\n"); + break; + } + int count2 = secondnum.length() - secondnum.replaceAll("\n","").length(); + //check how many "\n" in the numberStr + switch (count2) { + case 0: //one number + try { + sum2 = Integer.parseInt(secondnum); + } catch (NumberFormatException e) { + correctStr = false; + stringCalculatorException = new StringCalculatorException("invalid input (not numbers): "+ secondnum); + } + if (sum2 < 0) { + correctStr = false; + stringCalculatorException = new StringCalculatorException("negative numbers: " + secondnum); + } + break; + case 1: + String[] twoparts = secondnum.split("\n"); + String firstpart = twoparts[0]; + String secondpart = twoparts[1]; + try { + sum21 = Integer.parseInt(firstpart); + } catch (NumberFormatException e) { + correctStr = false; + stringCalculatorException = new StringCalculatorException("invalid input (not numbers): " + firstpart); + } + if (sum21 < 0) { + correctStr = false; + stringCalculatorException = new StringCalculatorException("negative numbers: " + firstpart); + } + try { + sum22 = Integer.parseInt(secondpart); + } catch (NumberFormatException e) { + correctStr = false; + stringCalculatorException = new StringCalculatorException("invalid input (not numbers): " + secondpart); + } + if (sum22 < 0) { + correctStr = false; + stringCalculatorException = new StringCalculatorException("negative numbers: "+ secondpart); + } + sum2 = sum21 + sum22; + break; + default: + correctStr = false; + stringCalculatorException = new StringCalculatorException("invalid input: too many \\n"); + break; + } + sum = sum1 + sum2; + } + break; + default: + correctStr = false; + stringCalculatorException = new StringCalculatorException("invalid input: too many ,"); + break; + + } + } + + if (correctStr) { + System.out.println("The sum of the numbers is: " + String.valueOf(sum)); + System.out.println(); + } + + return 0; } + + } diff --git a/src/StringCalculatorException.java b/src/StringCalculatorException.java index da71147..ed567a0 100644 --- a/src/StringCalculatorException.java +++ b/src/StringCalculatorException.java @@ -1,4 +1,8 @@ public class StringCalculatorException extends Exception { -} + public StringCalculatorException(String e) { + System.out.println(e); + } + +} \ No newline at end of file diff --git a/tests/StringCalculatorTest.java b/tests/StringCalculatorTest.java index 4ec9afe..5e42da0 100644 --- a/tests/StringCalculatorTest.java +++ b/tests/StringCalculatorTest.java @@ -6,7 +6,43 @@ public class StringCalculatorTest { @Test public void test() { - fail("Not yet implemented"); + StringCalculator cal = new StringCalculator(); + cal.add(""); + cal.add("2"); + cal.add("-2"); + cal.add("a"); + cal.add("1,2,3"); + cal.add("1,\n"); + cal.add("\n,1"); + cal.add("-1,a"); + cal.add("a,-1"); + + cal.add("1\n2,3"); + cal.add("1\n2,3\n4"); + cal.add("1,3\n4"); + cal.add("1,2"); + + cal.add("a,2"); + cal.add("-1,2"); + cal.add("1,a"); + cal.add("1,-2"); + + cal.add("a\n2,3"); + cal.add("-1\n2,3"); + cal.add("1\na,3"); + cal.add("1\n-2,3"); + cal.add("1,a\n4"); + cal.add("1,-3\n4"); + cal.add("1,3\na"); + cal.add("1,3\n-4"); + + cal.add("1\n2,a"); + cal.add("1\n2,-2"); + cal.add("a,3\n4"); + cal.add("-1,3\n4"); + cal.add("a\nb,c\nd"); + cal.add("-1\n-2,-3\n-4"); + cal.add("-1\n\n,-3\n-4"); } }