Dlaczego przypisuje do Stringa wartość null ?

0

Witam mam problem taki jak w temacie. Mianowicie tworzę metodę getStatus zwracająca String'a. Nie mam pojęcia dlaczego zamiast oczekiwanej wartości przypisuje mi null. Wydaje mi się że jest to dobrze ale jak widać coś nie gra podaję kod tej metody. Jak możecie to pomóżcie :) Warunek jest trochę długi ale w każdym if'ie chodzi o to samo tylko warości wiek i cisnienia są zmieniane. (wartości pcisnienieS, pcisnienieR i pwiek) są pobierane z JTextField.

public String getStatus()
    {
        String c1 = pcisnienieS.getText();
        int cS = Integer.parseInt(c1);
        String c2 = pcisnienieR.getText();
        int cR = Integer.parseInt(c2);
        String wi = pwiek.getText();
        int wiek = Integer.parseInt(wi);
        if(wiek >= 0 && wiek <= 2)
        {
            if((cS>=96||cS<=105)&&(cR>=65||cR<=74))
            {
                status = "Dziecko posiada znamienne nadciśnienie!";
            }
            else if(cS>=106&&cR>73)
            {
                status = "Dziecko posiada ciężkie nadciśnienie!";
            }
            else
            {
                status = "Ciśnienie w normie";
            }
            
        }
        else if(wiek >= 3 && wiek <= 5)
        {
            if((cS>=112||cS<=117)&&(cR>=74||cR<=81))
            {
                status = "Dziecko posiada znamienne nadciśnienie!";
            }
            else if(cS>117&&cR>82)
            {
                status = "Dziecko posiada ciężkie nadciśnienie!";
            }
            else
            {
                status = "Ciśnienie w normie";
            }
            
        }
        else if(wiek >= 6 && wiek <= 9)
        {
            if((cS>=116||cS<=123)&&(cR>=76||cR<=83))
            {
                status = "Dziecko posiada znamienne nadciśnienie!";
            }
            else if(cS>123&&cR>84)
            {
                status = "Dziecko posiada ciężkie nadciśnienie!";
            }
            else
            {
                status = "Ciśnienie w normie";
            }
            
        }
        else if(wiek >= 10 && wiek <= 12)
        {
            if((cS>=126||cS<=117)&&(cR>=74||cR<=81))
            {
                status = "Dziecko posiada znamienne nadciśnienie!";
            }
            else if(cS>117&&cR>82)
            {
                status = "Dziecko posiada ciężkie nadciśnienie!";
            }
            else
            {
                status = "Ciśnienie w normie";
            }
            
        }
        else if(wiek >= 13 && wiek <= 15)
        {
            if((cS>=136||cS<=143)&&(cR>=86||cR<=91))
            {
                status = "Dziecko posiada znamienne nadciśnienie!";
            }
            else if(cS>144&&cR>91)
            {
                status = "Dziecko posiada ciężkie nadciśnienie!";
            }
            else
            {
                status = "Ciśnienie w normie";
            }
            
        }
        else if(wiek >= 16 && wiek <= 18)
        {
            if((cS>=142||cS<=150)&&(cR>=92||cR<=98))
            {
                status = "Dziecko posiada znamienne nadciśnienie!";
            }
            else if(cS>150&&cR>98)
            {
                status = "Dziecko posiada ciężkie nadciśnienie!";
            }
            else
            {
                status = "Ciśnienie w normie";
            }
            
        }
            return status;
    }
1

Powiedz mi tylko gdzie stworzyłeś tą zmienną, bo raczej nie jest to zmienna lokalna metody bo jej nie widzę zadeklarowanej.

0

zmienna status zadeklarowana jest w tej samej klasie (public String status;) co metoda getStatus().

1

Wywal ten kod. Przepisz jeszcze raz, tym razem jak człowiek. Zapewniam cię że da się to zrobić znacznie krócej i czytelniej, bez kopiowania drabinek ifów.

0

nie wiem jak to można zrobić inaczej :) mam tabelkę z danymi, do których muszę się dostosować to jakoś obrazuję tę tabelkę :)

0

Jeśli wywala null to znaczy że instrukcje warunkowe nie zgadzają się(zwracają zawsze fałsz) bądź coś z tym statusem, np. zrób go statycznego.
public static status.

0

nie mam pojęcia. Jak wiecie jak można jeszcze rozplanować te warunki to podpowiedzcie :) w załączniku tabelka :)

0

Nie wiem czy można krócej to napisać ale można skrócić kod innymi isntrukcjami warunkowymi:

zamiast:

else if(cS>=106&&cR>73)
            {
                status = "Dziecko posiada ciężkie nadciśnienie!";
            }
            else
            {
                status = "Ciśnienie w normie";
            }

to

status = (cS>=106&&cR>73)? "Dziecko posiada ciężkie nadciśnienie!" : "Ciśnienie w normie";
0

Napisz sobie w każdym ifie System.out.println("tutaj kolejne numery"); to będziesz wiedział co z tego kodu się wywołuje. Stawiam, że nie wywołujesz wcale metody getStatus :)
Możesz zamiast tej drabinki ifów napisać klasę, która w konstruktorze przyjmuje wiek i zakresy ciśnień. Tworzysz obiekt dla każdego wiersza tabelki i dodajesz do listy. Potem z listy wybierasz odpowiedni dla wieku i w nim wywołujesz metodę sprawdzającą w którym przedziale jest ciśnienie.

0

ok udało mi się :) dzięki za podpowiedzi

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