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

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

30.05.2013, 23:11. Просмотров 2465. Ответов 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. Стараюсь создать клас с одним...

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

Создать метод класса для заполнения массива случайными числами
При запуске, обьекты «а» заполняются постоянно одними и теми числами. Как это...

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

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

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

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

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

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


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

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

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