volt_tm Opublikowano 8 Grudnia 2004 Zgłoś Opublikowano 8 Grudnia 2004 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); }} Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
spicum Opublikowano 9 Grudnia 2004 Zgłoś Opublikowano 9 Grudnia 2004 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 :?: Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
volt_tm Opublikowano 9 Grudnia 2004 Zgłoś Opublikowano 9 Grudnia 2004 Dzięki za odpowiedz spicum teraz wszystko działa ok. Używam Java2 SDK, Standard Editio Version 1.4.2 ale chyba nie dal tego skompilowało się bez wyjątków. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...