Skocz do zawartości
volt_tm

Obliczanie Silni z zadaną zmienną

Rekomendowane odpowiedzi

Program miał w założeniu obliczać silnię z podanej liczby jednak wychodzą kwiatki zamiast operować podaną zmienną kod działa na liczbach (51,52,53). Co może być źle czy wartości przyjmowane przez aplet są pobierane z przypadkowych komórek pamięci czy też jest to związane z długością zmiennej int? Błąd jest w kawałku dotyczącym podstawianie wczytanej zmiennej a kiedy przyjmujemy stałe n wszystko działa jak trzeba.

import java.io.*;public class silnia{        public static void main(String args[]) throws IOException        {         long S = 1L;         int n = 0;System.out.flush();         System.out.print("Podaj cyfre");         int n = System.in.read();  // odczyt jednego znaku    //   int n = 4;	         int i = 0;         System.out.println("Program oblicza silnie liczby n = " + n);         for (i = 1; i<=n; i++)          {           S*=i;          }         System.out.println(" n!= " + n + "! = " + S);        }}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Program miał w założeniu obliczać silnię z podanej liczby jednak wychodzą kwiatki zamiast operować podaną zmienną kod działa na liczbach (51,52,53).

wszystko pieknie ale
System.in.read();
wczytuje znak (char) i podaje jego wartosc jako int - ale jest to wartosc znaku w kodzie a nie wpisana cyfra - stad potrzeba zrzutowania tego inta na chara i sparsowania go do inta. (posrednikiem jest String bo nie kojarze w tej chwili funkcji ktora potrafilaby to zrobic z char).

 

powinno byc tak

import java.io.IOException;public class Silnia{	public static void main(String[] args)	{   long S = 1L;    int n = 0;    System.out.flush();    System.out.print("Podaj cyfre");    try  { 	 int test = System.in.read(); 	 n = Integer.parseInt(String.valueOf((char)test)); // odczyt jednego znaku  }  catch (IOException e)  {      e.printStackTrace();  }      int i = 0;    System.out.println("Program oblicza silnie liczby n = " + n);    for (i = 1; i<=n; i++)     {      S*=i;     }    System.out.println(" n!= " + n + "! = " + S);   } }

A tak swoja droga jak to sie stalo ze udalo Ci sie skompilowac wogole Twoj kod bez zlapania wyjatkow :?:

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...