Advertisement
Guest User

Untitled

a guest
Mar 24th, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.64 KB | None | 0 0
  1. public static void main(String[] args)
  2. {
  3. while( 1 > 0)
  4. {
  5. ArrayList<Integer> listNumberos = new ArrayList<>();
  6. ArrayList<Character> listOperador = new ArrayList<>();
  7. String expressao = getValues();
  8. if("end-of-file".equals(expressao))
  9. {
  10. break;
  11. }
  12. processar(expressao, listNumberos, listOperador);
  13. System.out.println(calcular(listNumberos, listOperador));
  14. }
  15. }
  16.  
  17. public static String getValues()
  18. {
  19. String expressao;
  20. Scanner keyboard = new Scanner(System.in);
  21. System.out.println("Write a number and press enter");
  22. expressao = keyboard.nextLine();
  23. return expressao;
  24. }
  25.  
  26.  
  27. public static String processar(String expressao, ArrayList<Integer> listNumberos, ArrayList<Character> listOperador)
  28. {
  29. String number = "";
  30. for(int count = 0; count < expressao.length(); count ++)
  31. {
  32. switch(expressao.charAt(count))
  33. {
  34. case '+':
  35. listNumberos.add(Integer.parseInt(number));
  36. listOperador.add('+');
  37. number = "0";
  38. break;
  39.  
  40. case '-':
  41. listNumberos.add(Integer.parseInt(number));
  42. listOperador.add('-');
  43. number = "0";
  44. break;
  45.  
  46. case '*':
  47. listNumberos.add(Integer.parseInt(number));
  48. listOperador.add('*');
  49. number = "0";
  50. break;
  51.  
  52. case '/':
  53. listNumberos.add(Integer.parseInt(number));
  54. listOperador.add('/');
  55. number = "0";
  56. break;
  57.  
  58. case '%':
  59. listNumberos.add(Integer.parseInt(number));
  60. listOperador.add('%');
  61. number = "0";
  62. break;
  63.  
  64. case ' ':
  65. break;
  66.  
  67. default:
  68. number = number + expressao.charAt(count);
  69. break;
  70. }
  71. }
  72. listNumberos.add(Integer.parseInt(number));
  73. return "";
  74. }
  75.  
  76. public static int calcular(ArrayList<Integer> listNumberos, ArrayList<Character> listOperador)
  77. {
  78. int numberX = 0;
  79. int numberY = 0;
  80. int calculo = 0;
  81. for(int count = 0; count < listOperador.size(); count ++)
  82. {
  83.  
  84. switch(listOperador.get(count))
  85. {
  86. case '+':
  87. if(count == 0)
  88. {
  89. numberX = listNumberos.get(0);
  90. numberY = listNumberos.get(1);
  91. calculo = (int) (numberX + numberY);
  92. }
  93. else
  94. {
  95. numberX = listNumberos.get(count+1);
  96. numberY = calculo;
  97. calculo = (int) (numberX + numberY);
  98. }
  99. break;
  100.  
  101. case '-':
  102. if(count == 0)
  103. {
  104. numberX = listNumberos.get(0);
  105. numberY = listNumberos.get(1);
  106. calculo = (int) (numberX - numberY);
  107. }
  108. else
  109. {
  110. numberX = listNumberos.get(count+1);
  111. numberY = calculo;
  112. calculo = (int) (numberY - numberX);
  113. }
  114. break;
  115.  
  116. case '*':
  117. if(count == 0)
  118. {
  119. numberX = listNumberos.get(0);
  120. numberY = listNumberos.get(1);
  121. calculo = (int) (numberX * numberY);
  122. }
  123. else
  124. {
  125. numberX = listNumberos.get(count+1);
  126. numberY = calculo;
  127. calculo = (int) (numberY * numberX);
  128. }
  129. break;
  130.  
  131. case '/':
  132. if(count == 0)
  133. {
  134. numberX = listNumberos.get(0);
  135. numberY = listNumberos.get(1);
  136. calculo = (int) (numberX / numberY);
  137. }
  138. else
  139. {
  140. numberX = listNumberos.get(count+1);
  141. numberY = calculo;
  142. calculo = (int) (numberY / numberX);
  143. }
  144. break;
  145.  
  146. case '%':
  147. if(count == 0)
  148. {
  149. numberX = listNumberos.get(0);
  150. numberY = listNumberos.get(1);
  151. calculo = (numberX % numberY);
  152. }
  153. else
  154. {
  155. numberX = listNumberos.get(count+1);
  156. numberY = calculo;
  157. calculo = (numberY % numberX);
  158. }
  159. break;
  160. }
  161.  
  162. }
  163. return calculo;
  164. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement