Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2012, 20:58   #1
sew960i
Пользователь
 
Регистрация: 24.01.2010
Сообщений: 34
По умолчанию потоки Java SE

Задание: Разработать программу на языке Java как в однопотоковом так и в многопотоковом вариантах. Программа должна позволять ввести с клавиатуры значения матрицы заданного размера, который не превышает Т(20,20). Отрицательные элементы матрицы записать в массив А(400) начиная снизу, а положительные - начиная сверху. Записи в массиве делать без пропусков элементов массива.
---------------------------------------------------------------
Код:
import java.util.Scanner;
import java.util.Arrays;
public class test {
public static void main(String[] args) {
//////Определяем основные переменные
int matrix,max,min,box,ln,c=0,h=0,u=0;
String str="",delim="",res="",ch, mx, mn;
/////////////////////////////////////
System.out.println("Введите размер матрицы T:");
Scanner in = new Scanner(System.in);
matrix = in.nextInt();
if(matrix<=20){  
int[][] T = new int[matrix][matrix]; 
int all=(matrix*matrix);
h=(all-1);
int[] A = new int[all];
int[] B = new int[all];    
System.out.println("Размер установлен в: "+matrix+"x"+matrix);
System.out.println("Колличество элементов матрицы: "+all);
System.out.println("");
System.out.println("-------------------------------------------------------------------------------");
/////////////////////
for(int i=0;i<matrix;i++){
for(int j=0;j<matrix;j++){
System.out.println("Введите "+i+","+j+" ("+c+") "+" элемент матрицы");
T[i][j] = in.nextInt(); 
B[c]=T[i][j];
if(T[i][j]>=0){A[u] = T[i][j]; u++;}else{A[h] = T[i][j]; h--;}
c++;
}}
///
Arrays.sort(B);
mn = Integer.toString(B[0]);
min=mn.length();
mx = Integer.toString(B[all-1]);
max=mx.length();
if(max>=min){box=max;}else{box=min;}
int l=((box*matrix)+(matrix+1));
for(int k=0;k<l;k++){delim+="-";}
///
System.out.println("-------------------------------------------------------------------------------");
System.out.println("");
System.out.println("Ваша матрица T:");
System.out.println(delim);
/////////////////////
for(int i=0;i<matrix;i++){
str+="|";
for(int j=0;j<matrix;j++){   
ch=Integer.toString(T[i][j]);
ln=ch.length();
if(ln<box){int razn=(box-ln); for(int g=0;g<razn;g++){str+=" ";}}
str+=Integer.toString(T[i][j]);
str+="|";}
System.out.println(str);
System.out.println(delim);
str="";}
/////////////////////
System.out.println("");
System.out.println("");
System.out.println("Ваш массив A:");
System.out.println("верх[+] ->         <- [-]низ");
for(int n=0;n<all;n++){res+=Integer.toString(A[n]); if(n<(all-1)){res+=",";}}
System.out.println(res);
/////////////////////
System.out.println("");
System.out.println("-------------------------------------------------------------------------------");
}else{System.out.println("Размер матрицы T должен быть не более, чем 20x20");}
}}
----------------------------------------------------
Я смог сделать задание только в однопотоковом виде (мой код выше)... Помогите эту программу переписать в многопотоковый вариант...
sew960i вне форума Ответить с цитированием
Старый 27.10.2012, 15:25   #2
SunKnight
Участник клуба Подтвердите свой е-майл
 
Аватар для SunKnight
 
Регистрация: 14.12.2007
Сообщений: 1,434
По умолчанию

О Боже, что это за ужас! Этот код невозможно читать... мои глаза.

Нужно создать 2а класса которые будут реализовывать интерфейс Runnable и реализовать метод run. В первом классе будут высчитываться положительные элементы, а во втором - отрицательные. Создать и запустить потоки:
Код:
Runnable positiveArray = new PositiveRunnable(myArray);
Thread t = new Thread(positiveArray);
t.start();
....
Проповедую design patterns, верую в MVC, доверяю eXtrime programming.
SunKnight вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Потоки(Java SE) ISV-777 Помощь студентам 1 30.05.2012 12:33
Помогите справиться с java.lang.OutOfMemoryError: Java heap space Levilaulada Помощь студентам 1 17.05.2009 10:59