Глава 6
Задача 6.16 "Сумма квадратов."
Напишите типизированный метод, который принимает в качестве параметров целые числа и возвращает сумму квадратов целых чисел, находящихся на числовой прямой между ними, включая граничные значения. Как вызвать метод для вывода значений суммы квадратов целых чисел из диапазона от 1 до 10? Каким образом должна измениться программа, если данные сначала нужно ввести в массив?
Решение 2
Здесь использовано Display-окно, чтобы сделать ввод данных в программу интерактивным. Функция, которая подсчитывает сумму квадратов последовательности работает без изменений.
Код программы:
import java.io.*;
import javagently.*;
import java.util.*;
import myutilities.*;
class SumSquare {
Display d = new Display ("Сумма квадратов последовательности");
SumSquare () throws IOException {
d.prompt("Первый элемент", "1");
d.prompt("Последний элемент", "10");
for (; ;) {
d.ready("\nPress ready when numbers entered");
int m = d.getInt("Первый элемент"); //
int n = d.getInt("Последний элемент"); //
int sumSq = sumSquare(m,n);
d.println(" " + m);
d.println(" " + n);
d.println(" ");
d.println(" Summ of square of elements of array is " + sumSq);
}//end for
}
public static void main(String[] args) throws IOException {
SumSquare data = new SumSquare ();
}
int sumSquare(int n, int m){
int k = m - n ;
int sumSq = 0;
System.out.println(" k = " + k);
if(k < 0){
k--;
k =-k;
int mas[] = new int[k];
for(int i = 0; i < k; i++){
mas[i] = m;
m++;
}
for(int j = 0; j < mas.length; j++){
sumSq = sumSq + mas[j]*mas[j];
}
}
else{
k++;
int mas[] = new int[k];
for(int i = 0; i < k; i++){
mas[i] = n;
n++;
}
for(int j = 0; j < mas.length; j++){
sumSq = sumSq + mas[j]*mas[j];
}
}
return sumSq;
}
} // class
Результат :
Назад |
Начало урока |
Вверх |
Вперед
Содержание