Advertisement
Felanpro

OperationerMedNaturligaHeltal

Dec 10th, 2021
755
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.01 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. class OperationerMedNaturligaHeltalGivnaSomTeckenStrangar
  4. {
  5.     public static void main(String[] args)
  6.     {
  7.         System.out.println("OPERATIONER MED NATURLIGA HELTAL GIVNA SOM TECKENSTRANGAR\n");
  8.  
  9.         //mata in tv� naturliga heltal
  10.         Scanner in = new Scanner(System.in);
  11.         System.out.println("tv� naturliga heltal:");
  12.         String tal1 = in.next();
  13.         String tal2 = in.next();
  14.         System.out.println();
  15.  
  16.         //addera heltalen och visa resultatet
  17.         String summa = addera(tal1, tal2);
  18.         visa(tal1, tal2, summa, '+');
  19.  
  20.         //subtrahera heltalen och visa resultatet
  21.         String differens = subtrahera(tal1, tal2);
  22.         visa(tal1, tal2, differens, '-');
  23.     }
  24.  
  25.     //addera tar emot tv� naturliga heltal givna som teckenstr�ngar, och returnerar deras
  26.     //summa som en teckenstr�ng.
  27.     public static String addera(String talet1, String talet2)
  28.     {
  29.         StringBuilder tal1 = new StringBuilder(talet1);
  30.         StringBuilder tal2 = new StringBuilder(talet2);
  31.  
  32.         if(tal1.length() > tal2.length())
  33.         {
  34.             System.out.println(tal1.length() - tal2.length());
  35.             for(int i = 0; i < (tal1.length() - tal2.length()) + 1; i++)
  36.             {
  37.                 tal2.insert(0, 0);
  38.             }
  39.         }
  40.         else if(tal2.length() > tal1.length())
  41.         {
  42.             for(int i = 0; i < (tal2.length() - tal1.length()) + 1; i++)
  43.             {
  44.                 tal1.insert(0, 0);
  45.             }
  46.         }
  47.  
  48.         StringBuilder summa = new StringBuilder();
  49.         int minne = 0;
  50.         int summa_int;
  51.  
  52.         for(int i = 0; i < tal1.length(); i++)
  53.         {
  54.             summa_int = (tal1.charAt((tal1.length() - 1) - i) - 48) + (tal2.charAt((tal2.length() - 1) - i) - 48) + minne;
  55.             minne = 0;
  56.             if(summa_int >= 10) //Om summan alltså överstiger 9
  57.             {
  58.                 summa_int = summa_int - 10;
  59.                 minne = 1;
  60.             }
  61.  
  62.             summa.insert(0, summa_int);
  63.  
  64.         }
  65.  
  66.         if(minne == 1)
  67.         summa.insert(0, minne);
  68.         String summaString = summa.toString();
  69.  
  70.         return summaString;
  71.     }
  72.  
  73.     //subtrahera tar emot tv� naturliga heltal givna som teckenstr�ngar, och returnerar
  74.     //deras differens som en teckenstr�ng.
  75.     //Det f�rsta heltalet �r inte mindre �n det andra heltalet.
  76.     public static String subtrahera(String talet1, String talet2)
  77.     {
  78.         StringBuilder tal1 = new StringBuilder(talet1);
  79.         StringBuilder tal2 = new StringBuilder(talet2);
  80.         int differens = 0;
  81.         StringBuilder diff = new StringBuilder();
  82.         int minne = 0;
  83.  
  84.         if(tal1.length() > tal2.length())
  85.         {
  86.             for(int i = 0; i < (tal1.length() - tal2.length()) + 1; i++)
  87.             {
  88.                 tal2.insert(0, 0);
  89.             }
  90.         }
  91.  
  92.         for(int i = 0; i < tal1.length(); i++)
  93.         {
  94.             if(tal1.charAt(tal1.length() - 1 - i) < tal2.charAt(tal2.length() - 1 - i))
  95.             {
  96.                 differens = ((tal1.charAt(tal1.length() - 1 - i) - 48) + 10) - (tal2.charAt(tal1.length() - 1 - i) - 48) - minne;
  97.                 minne = 1;
  98.             }
  99.             else
  100.             {
  101.                 differens = ((tal1.charAt(tal1.length() - 1 - i) - 48)) - (tal2.charAt(tal1.length() - 1 - i) - 48) - minne;
  102.                 minne = 0;
  103.             }
  104.  
  105.             diff.insert(0, differens);
  106.         }
  107.  
  108.         String differensString = diff.toString();
  109.  
  110.         return differensString;
  111.     }
  112.  
  113.     //visa visar tv� givna naturliga heltal, och resultatet av en aritmetisk operation
  114.     //utf�rd i samband med heltalen
  115.     public static void visa(String tal1, String tal2, String resultat, char operator)
  116.     {
  117.         //s�tt en l�mplig l�ngd p� heltalen och resultatet
  118.         int len1 = tal1.length();
  119.         int len2 = tal2.length();
  120.         int len = resultat.length();
  121.         int maxLen = Math.max(Math.max(len1, len2), len);
  122.  
  123.         tal1 = sattLen(tal1, maxLen - len1);
  124.         tal2 = sattLen(tal2, maxLen - len2);
  125.         resultat = sattLen(resultat, maxLen - len);
  126.  
  127.         //visa heltalen och resultatet
  128.         System.out.println(" " + tal1);
  129.         System.out.println("" + operator + " " + tal2);
  130.         for(int i = 0; i < maxLen + 2; i++)
  131.             System.out.print("-");
  132.         System.out.println();
  133.         System.out.println(" " + resultat + "\n");
  134.     }
  135.  
  136.     //sattLen l�gger till ett angivet antal mellanslag i b�rjan av en given str�ng
  137.     public static String sattLen(String s, int antal)
  138.     {
  139.         StringBuilder sb = new StringBuilder(s);
  140.         for(int i = 0; i < antal; i++)
  141.             sb.insert(0, " ");
  142.  
  143.         return sb.toString();
  144.     }
  145. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement