Advertisement
lapitan

a*b

May 23rd, 2022
504
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. public class Main {
  2.  
  3.     public static void main(String[] args) {
  4.         int a=7;
  5.         int b=3;
  6.         int result=multiply(a,b);
  7.         System.out.println("result: "+result);
  8.     }
  9.    
  10.     //сделал эту функцию, т.к. при умножении отрицательных чисел надо брать обратное
  11.     //если ставить просто знак -, то это умножение на -1
  12.     //а нам нельзя умножать
  13.     private static int negate(int a){
  14.         int add=-1;
  15.         if(a<0){
  16.             add=1;
  17.         }
  18.         int result=0;
  19.         while (result+a!=0){
  20.             result +=add;
  21.         }
  22.         return result;
  23.     }
  24.  
  25.     private static int multiply(Integer x,Integer y){
  26.         boolean negateY=false;
  27.         boolean negateX=false;
  28.  
  29.         if(x<0){
  30.             negateX=true;
  31.             x=negate(x);
  32.         }
  33.  
  34.         if(y<0){
  35.             negateY=true;
  36.             y=negate(y);
  37.         }
  38.  
  39.         int result=0;
  40.         if(x<y){
  41.             int[] swapped =swap(x,y);
  42.             x=swapped[0];
  43.             y=swapped[1];
  44.         }
  45.         for(int i=0;i<y;i++){
  46.             result+=x;
  47.         }
  48.         if(negateX^negateY){
  49.             result=negate(result);
  50.         }
  51.         return result;
  52.     }
  53.  
  54.     private static int[] swap(Integer x, Integer y){
  55.         return new int[]{y,x};
  56.     }
  57.  
  58. }
  59.  
Advertisement
RAW Paste Data Copied
Advertisement