Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- class OperationerMedNaturligaHeltalGivnaSomTeckenStrangar
- {
- public static void main(String[] args)
- {
- System.out.println("OPERATIONER MED NATURLIGA HELTAL GIVNA SOM TECKENSTRANGAR\n");
- //mata in tv� naturliga heltal
- Scanner in = new Scanner(System.in);
- System.out.println("tv� naturliga heltal:");
- String tal1 = in.next();
- String tal2 = in.next();
- System.out.println();
- //addera heltalen och visa resultatet
- String summa = addera(tal1, tal2);
- visa(tal1, tal2, summa, '+');
- //subtrahera heltalen och visa resultatet
- String differens = subtrahera(tal1, tal2);
- visa(tal1, tal2, differens, '-');
- }
- //addera tar emot tv� naturliga heltal givna som teckenstr�ngar, och returnerar deras
- //summa som en teckenstr�ng.
- public static String addera(String talet1, String talet2)
- {
- StringBuilder tal1 = new StringBuilder(talet1);
- StringBuilder tal2 = new StringBuilder(talet2);
- if(tal1.length() > tal2.length())
- {
- System.out.println(tal1.length() - tal2.length());
- for(int i = 0; i < (tal1.length() - tal2.length()) + 1; i++)
- {
- tal2.insert(0, 0);
- }
- }
- else if(tal2.length() > tal1.length())
- {
- for(int i = 0; i < (tal2.length() - tal1.length()) + 1; i++)
- {
- tal1.insert(0, 0);
- }
- }
- StringBuilder summa = new StringBuilder();
- int minne = 0;
- int summa_int;
- for(int i = 0; i < tal1.length(); i++)
- {
- summa_int = (tal1.charAt((tal1.length() - 1) - i) - 48) + (tal2.charAt((tal2.length() - 1) - i) - 48) + minne;
- minne = 0;
- if(summa_int >= 10) //Om summan alltså överstiger 9
- {
- summa_int = summa_int - 10;
- minne = 1;
- }
- summa.insert(0, summa_int);
- }
- if(minne == 1)
- summa.insert(0, minne);
- String summaString = summa.toString();
- return summaString;
- }
- //subtrahera tar emot tv� naturliga heltal givna som teckenstr�ngar, och returnerar
- //deras differens som en teckenstr�ng.
- //Det f�rsta heltalet �r inte mindre �n det andra heltalet.
- public static String subtrahera(String talet1, String talet2)
- {
- StringBuilder tal1 = new StringBuilder(talet1);
- StringBuilder tal2 = new StringBuilder(talet2);
- int differens = 0;
- StringBuilder diff = new StringBuilder();
- int minne = 0;
- if(tal1.length() > tal2.length())
- {
- for(int i = 0; i < (tal1.length() - tal2.length()) + 1; i++)
- {
- tal2.insert(0, 0);
- }
- }
- for(int i = 0; i < tal1.length(); i++)
- {
- if(tal1.charAt(tal1.length() - 1 - i) < tal2.charAt(tal2.length() - 1 - i))
- {
- differens = ((tal1.charAt(tal1.length() - 1 - i) - 48) + 10) - (tal2.charAt(tal1.length() - 1 - i) - 48) - minne;
- minne = 1;
- }
- else
- {
- differens = ((tal1.charAt(tal1.length() - 1 - i) - 48)) - (tal2.charAt(tal1.length() - 1 - i) - 48) - minne;
- minne = 0;
- }
- diff.insert(0, differens);
- }
- String differensString = diff.toString();
- return differensString;
- }
- //visa visar tv� givna naturliga heltal, och resultatet av en aritmetisk operation
- //utf�rd i samband med heltalen
- public static void visa(String tal1, String tal2, String resultat, char operator)
- {
- //s�tt en l�mplig l�ngd p� heltalen och resultatet
- int len1 = tal1.length();
- int len2 = tal2.length();
- int len = resultat.length();
- int maxLen = Math.max(Math.max(len1, len2), len);
- tal1 = sattLen(tal1, maxLen - len1);
- tal2 = sattLen(tal2, maxLen - len2);
- resultat = sattLen(resultat, maxLen - len);
- //visa heltalen och resultatet
- System.out.println(" " + tal1);
- System.out.println("" + operator + " " + tal2);
- for(int i = 0; i < maxLen + 2; i++)
- System.out.print("-");
- System.out.println();
- System.out.println(" " + resultat + "\n");
- }
- //sattLen l�gger till ett angivet antal mellanslag i b�rjan av en given str�ng
- public static String sattLen(String s, int antal)
- {
- StringBuilder sb = new StringBuilder(s);
- for(int i = 0; i < antal; i++)
- sb.insert(0, " ");
- return sb.toString();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement