Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 5.00
Why so seriouS
44 / 44 / 12
Регистрация: 12.03.2013
Сообщений: 167
#1

Шаблоны: простой шаблонный метод для заполнения элементов массива любыми числами - Java SE

30.05.2013, 23:11. Просмотров 2371. Ответов 4
Метки нет (Все метки)

Хочу написать простой шаблонный метод для заполнения элементов массива любыми числами. Как мне это сделать?
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package main;
 
import java.util.Scanner;
 
public class Main {
    
    public static<T extends Number> void out(T arr[],int n)
    {
        for(int i=0;i<n;i++)
            System.out.print(arr[i] + " ");
        System.out.println();
    }
    
    public static<T extends Number> void inp(T arr[],int n)
    {
        for(int i=0;i<n;i++)
            //arr[i] = Math.random()*n;             так не работает
    }
    public static void main(String[] args) {
        
        Scanner s = new Scanner(System.in);
        int n = s.nextInt();
        Integer arr [] = new Integer[n];
    }
}
Добавлено через 7 минут
И еще ситуация: как мне элементы массива приравнять к какому-то числу?
Нечто вроде этого:
Java
1
2
3
4
5
6
7
8
public static<T extends Number> void zero(T arr[],int n)
    {
        int count = 0;
        for(int i=0;i<n;i++)
            if(arr[i] == 0)
                count++;
        System.out.println(count);
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.05.2013, 23:11
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Шаблоны: простой шаблонный метод для заполнения элементов массива любыми числами (Java SE):

Метод для заполнения массива случайными числами
Здраствуйте. Учусь по немного, изучаю Java. Стараюсь создать клас с одним полем int mat, гетери,сетери, toString. Создать метод который...

Как создать метод для заполнения массива
Вот условие задачи: Создать статический метод, который будет иметь два целочисленных параметра a и b, и в качестве своего значения...

Создать метод класса для заполнения массива случайными числами
При запуске, обьекты «а» заполняются постоянно одними и теми числами. Как это исправить? //main.cpp #include &lt;time.h&gt; #include...

Ищу встроенный метод (похожее тоже приветствуется) для заполнения массива числами из строки ,где данные в строку вводятся через пробел .
Простите за нуботемы (= Добавлено через 3 минуты Помнится на с плюс плюс было что-то подобное

Написать программу заполнения массива из 5 элементов целыми числами
1) Написать программу выполняющею заполнения массива из 5 элементов целыми числами, введенными с клавиатуры.

2 массива с любыми числами нужно отнять в столбик
2 массива с любыми числами нужно отнять в столбик mas= mas=

4
AckiyBolt
649 / 398 / 35
Регистрация: 19.02.2013
Сообщений: 1,072
Записей в блоге: 2
30.05.2013, 23:17 #2
лучше типо такого:
Java
1
2
Random rnd = new Random(System.nanoTime());
int i = rnd.nextInt();
это:
Java
1
arr[i] = Math.random()*n;
не работает потому что Math.random() возвращает дабл, к нему кастится значение n и в итоге справа вы имеете цифру с плавающей запятой которую не кастите к T. в вашем случае нужно как-то так сделать:
Java
1
2
Random rnd = new Random(System.nanoTime());
arr[i] = (T)Integer.valueOf(rnd.nextInt());
ток проверить негде

Добавлено через 43 секунды
приравнять через .equals()
1
Why so seriouS
44 / 44 / 12
Регистрация: 12.03.2013
Сообщений: 167
31.05.2013, 00:00  [ТС] #3
Еще есть пару вопросов: как мне теперь посчитать сумму элементов этого массива?
Java
1
2
3
4
5
6
7
8
9
public static<T extends Number> void Sum(T arr[],int n,int begin, int end)
    {
    double sum = 0;
    
    for(int i = begin; i <= end; i++)
        sum += Double.valueOf(arr[i]);
 
    System.out.println(sum);
    }
Добавлено через 27 минут
Насколько мне известно java не знает при выполнении какой T имеет тип. Так как мне добраться до элементов этого массива если я незнаю какой у него тип?) Как допустим написать функцию шаблон для ввода элементов в массив различных типов, таких как Integer, Double, Byte. Или сортировку этих массивов, или функцию нахождения суммы элементов этих массивов.. Помогите разобраться с этим)
Вот к чему я додумался)
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package main;
 
import java.util.Scanner;
 
public class Main {
    /*public static<T extends Number> void Sort(T arr[])
    {
    T  tmp;
    for(int i = 0; i < arr.length; i++)
        for(int j = 0; j < arr.length; j++)
            if(Math.abs((T)Integer.valueOf(arr[i])))
            {
                tmp = arr[i];
                arr[i] = arr[j];
                arr[j] = tmp;
            }
    }*/
 
    public static<T extends Number> void Sum(T arr[],int begin, int end)
    {
    double sum = 0;
    
    for(int i = begin; i <= end; i++)
        sum += Double.valueOf(arr[i].toString());
 
    System.out.println(sum);
    }
 
    
    public static<T extends Number> void out(T arr[],int n)
    {
        for(int i=0;i<n;i++)
            System.out.print(arr[i] + " ");
        System.out.println();
    }
    
    public static<T extends Number> void inp(T arr[],int n)
    {
        for(int i=0;i<n;i++)
            arr[i] = (T)Integer.valueOf((int)(Math.random()*n));
    }
    public static<T extends Number> void zero(T arr[],int n)
    {
        int count = 0;
        for(int i=0;i<n;i++)
            if(arr[i].equals(0))
                count++;
        System.out.println(count);
    }
    public static void main(String[] args) {
        
        Scanner s = new Scanner(System.in);
        int n = s.nextInt();
        Integer arr [] = new Integer[n];
        Double d [] = new Double[n];
        inp(d,n);
        inp(arr,n);
        out(d,n);
        out(arr,n);
        zero(d,n);
        zero(arr,n);
        int a = s.nextInt(),b = s.nextInt();
        Sum(d,a,b);
        Sum(arr,a,b);
    }
}
Добавлено через 1 минуту
И оно даже не компилируется((
0
AckiyBolt
649 / 398 / 35
Регистрация: 19.02.2013
Сообщений: 1,072
Записей в блоге: 2
31.05.2013, 01:59 #4
боюсь вам придется писать две реализации, для целых и дробных чисел. вот для целых, для дробных думаю догадаетесь:
Java
1
2
3
4
5
        Number sum = 0;
 
        for (int i = begin; i <= end; i++) {
            sum = sum.longValue() + ((Number)arr[i]).longValue();
        }

и еще раз по поводу Math.random(), вы же еще не смотрели какой оно вам массив сделает, да?)
0
Золотце
141 / 104 / 16
Регистрация: 21.04.2011
Сообщений: 402
04.06.2013, 16:19 #5
Цитата Сообщение от Why so seriouS Посмотреть сообщение
Насколько мне известно java не знает при выполнении какой T имеет тип. Так как мне добраться до элементов этого массива если я незнаю какой у него тип?)
Он знает что эта штука наследует тип Намбер поэтому думаю инфа по намберу там есть.
Кстати не советую работать с массивами если вы используете дженерики. Могут появится неприятные моменты
0
04.06.2013, 16:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.06.2013, 16:19
Привет! Вот еще темы с решениями:

Составить цикл для заполнения массива числами, которые состоят из 1,3
Составить цикл для заполнения массива числами, которые состоят из 1,3. В массиве 100 элементов

Составить проект программы для заполнения элементов массива значениями элементов последовательности
Элементы последовательности вычисляются по правилу А = х^n *sin(k)/e^k , k = 1,2,3, ,7. Составить проект программы для заполнения...

Задавая различные шаблоны заполнения для граней, построить куб
Задавая различные шаблоны заполнения для граней, построить куб


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru