[java] Program wczytujący i zwracający liczby


(Finki Kun) #1

Witam,

Mam problem z programem, który ma za zadanie wczytać liczbę n , następnie wczytać n liczb i wypisać je w odwrotnej kolejności na ekranie (od ostatniej do pierwszej). Próbowałem to zrobić przerabiając kod programu, który zamiast te liczby wypisywać dodawał, ale - najczęściej - program wypisujący sypie się zaraz po wczytaniu zmiennych lub zapętla się w nieskończoność. Wklejam kod tego dodającego, może coś na to poradzicie, bo ja już nie wiem, co robić.

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;


public class Tablice {

	public static int getIntFromKeyboard() {

		int result = 0;

		BufferedReader klaw = new BufferedReader(new InputStreamReader(

				System.in));

		System.out.println("Podaj liczbe calkowita:");

		try {

			String liczbastring = klaw.readLine();

			result = Integer.parseInt(liczbastring);


		} catch (IOException e) {

		}

		return result;

	}


	public static void main(String[] args) {

		int n = getIntFromKeyboard();


		int[] tablica = new int[n];


		for (int i = 0; i < tablica.length; i++) {

			tablica[i] = getIntFromKeyboard();

		}


		int suma = 0;


		for (int j = 0; j < tablica.length; j++) {

			suma = suma + tablica[j];

		}


		System.out.println(suma);

	}

}

(Sawyer47) #2

Zakładając, że poda się poprawne dane, to ten program wydaje się być ok. Przeróbka jest trywialna i ogranicza się do zmiany ostatniej pętli. Choć jakąś akcję wypadałoby podjąć w wypadku, gdy dane będą niepoprawne - sprawdzaj, czy konwersja się udaje.


(Finki Kun) #3

Właśnie ta zmiana ostatniej pętli mi nie wychodzi - nie mam zielonego pojęcia jak to zrobić, by działała (sam program dodający działa poprawnie, to wiem). Po każdorazowej próbie ingerencji program wysypuje mi się zaraz po zdefiniowaniu zmiennych. Zdają sobie sprawę, że sprawa jest trywialna dla kogoś, kto się na tym zna, nas prowadzący rzucił od razu na coś takiego, żebyśmy się "pobawili" - tyle, że nic nie wytłumaczył.


(Sawyer47) #4

W Javie tablice indeksowane są wartościami 0 ... N-1, N - rozmiar rozmiar tablicy. Do uzyskania ciągu rosnących indeksów masz w tym kodzie powyżej

for (int j = 0; j < tablica.length; j++)

Żeby osiągnąć odwrotną kolejność, czyli N-1 ... 0 wystarczy napisać

for (int j = tablica.length - 1; j >= 0; --j)

(Finki Kun) #5

Dzięki, faktycznie wszystko działa. Czeka mnie jeszcze długa nauka tego wszystkiego...