kalkulator a wyniki ujemne

0

Witam mam problem z uzyskaniem wyników ujemnych z tego kodu kombinowałem na różne sposoby i w wyniku wychodzą mi "//"

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package javaapplication31;

/**
*
* @author xyz
*/
public class Liczby {

 
public static int [] naTabInt(String liczba, int wymiar)
  {
    int [] tab = new int[wymiar];
    int pozycja = liczba.length() - 1;
    for (int i = 0; i < wymiar; i++)
      {
      if (pozycja < 0) tab[i] = 0;
      else tab[i] = liczba.charAt(pozycja--) - 48;
      }
      return tab;
  }  
public static String odejmij(String A, String B)   
  {
      String wynik = "";
      int wymiar = Math.max(A.length(), B.length()) + 1;
    
      int [] tA = new int[wymiar];
      int [] tB = new int[wymiar];
      int [] tW = new int[wymiar];

    tA = naTabInt(A, wymiar);
    tB = naTabInt(B, wymiar);
  
    for (int i=0; i< wymiar; i++) tW[i] = 0;
    for (int i = 0; i <wymiar - 1; i++)
    {
        tW[i+1] += (tW[i]+tA[i]-tB[i]+10)/10 - 1;
        tW[i] = (tW[i]+tA[i]-tB[i] + 10)%10;
    }
    while (wymiar >1 && tW[wymiar-1]==0)wymiar--;
  
    for (int i= wymiar; i >0; i--) wynik += (char)(tW[i-1]+48);
  
return wynik; 
}
    public static void main(String[] args) {
       String A="1111", B="1";
       System.out.print(A+" - "+B+" = ");
       System.out.println(odejmij(A,B));
     
       A="5";
       B="6";
       System.out.print(A+" - "+B+" = ");
       System.out.println(odejmij(A,B));
      
      
    }
  
}

0

Podstawowe pytanie: ktoś wprost i wyraźnie kazał Ci ręcznie konwertować stringi do liczb, czy po prostu nie wiesz, że mógłbyś wykorzystać Double.parseDouble?

double x = Double.parseDouble("-123.456");
0
superdurszlak napisał(a):

na zadanie mam przerobić kod z zajęć tak aby odejowanie wiekszych od mniejszych dawało prawidłowy wynik

0

Jak wygląda ten "kod z zajęć"? Dostaliście coś gotowego do przerobienia, czy zacząłeś pisać na zajęciach i kończysz teraz, ale nie miałeś narzuconej metody?

Największy problem widzę w tym, że konwertujesz poszczególne liczby to całych tablic intów, zamiast do pojedynczych liczb. Jest spora szansa, że robisz sobie niepotrzebnie pod górkę.

0

To co wrzuciłem jest kodem z zajęć i mam za zadanie : "należy zmodyfikować funkcje z zajęć tak aby: - odejmowanie liczby większej od mniejszej dawało prawidłowy wynik (np 99 - 199 = -100),"

1

I w ogóle go nie modyfikowałeś?

Próbowałeś w ogóle sam coś zrobić z tym zadaniem, czy uznałeś że wrzucisz to na 4p i ktoś Ci w końcu da gotowca? To tak nie działa, trzeba się wykazać choć odrobiną chęci.

Podpowiedź: Zastanów się, dla dwóch liczb N-cyfrowych, jaka wartość będzie siedziała na N-tej pozycji w tW, gdy wynik jest ujemny, a jaka, gdy jest dodatni. Jaki warunek możesz na podstawie tego zbudować, by zamiast jakichś znaków ASCII które się nawiną w konwersji dostać faktycznie znak "-" przed liczbą ujemną.

1 użytkowników online, w tym zalogowanych: 0, gości: 1