Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package Lincalc;
- import lincalc.LinCalcJohn;
- import java.util.Arrays;
- import java.util.Scanner;
- public class LinCalc {
- public static void printArray(String[] array){
- StringBuffer sb = new StringBuffer();
- sb.append("[");
- for (int i = 0; i < array.length; i++) {
- sb.append(array[i]);
- sb.append(", ");
- }
- // Replace the last ", " with "]"
- sb.replace(sb.length() - 2, sb.length(), "]");
- System.out.println(sb);
- }
- public static void main(String[] args) {
- Scanner in = new Scanner(System.in);
- String expression;
- double result;
- System.out.print("Enter expression: ");
- expression = in.nextLine();
- do {
- result = evaluate(expression);
- System.out.println("Result was: " + result);
- System.out.print("Enter expression: ");
- } while (!"".equals(expression = in.nextLine()));
- }
- public static double calc(String[] lexedPostfix) {
- return LinCalcJohn.calc(lexedPostfix);
- }
- public static String[] toPostfix(String[] inputData) {
- return LinCalcJohn.toPostfix(inputData);
- }
- public static double evaluate(String expression) {
- String[] lexedInfix = lex(expression);
- String[] lexedPostfix = toPostfix(lexedInfix);
- return calc(lexedPostfix);
- }
- public static String[] lex(String expr) {
- String operatorer = "*+-/()";
- String operander = "0123456789";
- String infix = "";
- String[] parts = new String [99];
- int indexCounter = 0;
- char previousChar = '+';
- for (int i = 0; i < expr.length(); i++) {
- char current = expr.charAt(i);
- //if (memberOf(current, minus)) {
- //}
- //om medlem i operander, lägg till i tomma stringen infix
- if (memberOf(current, operander)) {
- infix += current;
- parts[indexCounter] = infix;
- }
- //om medlem i operatorer, räkna index i stringen infix, töm stringen, lägg till värdet av current till arrayen
- if (memberOf(current, operatorer)) {
- if(memberOf(previousChar, operatorer)) {
- //parts[indexCounter] = infix;
- //infix = "";
- parts[indexCounter] = String.valueOf(current);
- System.out.println("abc");
- }
- parts[indexCounter++] = infix;
- infix = "";
- parts[indexCounter++] = String.valueOf(current);
- }
- previousChar = current;
- }
- //int för antalet icke-nulls i arrayen
- int newSize = 0;
- //loop för att gå igenom arrayen och räkna antalet icke-nulls
- for (int i = 0; i < parts.length; i++) {
- if (parts[i] != null) {
- newSize++;
- }
- System.out.println(newSize);
- }
- //ny array med storleken av antalet icke-nulls
- String[] noNulls = new String[newSize];
- //ge den nya arrayen med rätt storlek de gamla värdena
- for (int i = 0; i < noNulls.length; i++) {
- noNulls[i] = parts[i];
- }
- System.out.println(Arrays.toString(noNulls));
- return noNulls;
- }
- public static boolean memberOf(char x, String z) {
- for(int i=0; i<z.length(); i++) {
- char current = z.charAt(i);
- if(current == x) {
- return true;
- }
- }
- return false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement