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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2011, 22:47   #1
ISV-777
Пользователь
 
Регистрация: 01.11.2010
Сообщений: 40
Вопрос Массивы Символьные

Нужно поменять в массиве 2 строку с 5. Я знаю,что у меня ошибки в методах, но уже не знаю как их исправить.

public class lr1 {
char ar[][]={{'q','w','e','r','t'},
{'y','u','i','o','p'},
{'a','s','d','f','g'},
{'h','j','k','l','z'},
{'x','c','v','b','n'}
};
public char method1(){
char f;
System.arraycopy(ar[1], 0, s[0], 0, 4);
return f;
}
public char method2(){
char s;
System.arraycopy(ar[4], 0, s[0], 0, 4);
return s;}

public static void main(String arg[]){
lr1 p=new lr1();
for (int j=0;j<4;j++){
p.ar[4][j]=(char)p.method1();
}
for (int j=0;j<4;j++){
p.ar[1][j]=(char)p.method2();
}
System.out.println(p.ar[0][0]+" "+p.ar[0][1]+" "+p.ar[0][2]+" "+p.ar[0][3]+" "+p.ar[0][4]
+"\n"+p.ar[1][0]+" "+p.ar[1][1]+" "+p.ar[1][2]+" "+p.ar[1][3]+" "+p.ar[1][4]
+"\n"+p.ar[2][0]+" "+p.ar[2][1]+" "+p.ar[2][2]+" "+p.ar[2][3]+" "+p.ar[2][4]
+"\n"+p.ar[3][0]+" "+p.ar[3][1]+" "+p.ar[3][2]+" "+p.ar[3][3]+" "+p.ar[3][4]
+"\n"+p.ar[4][0]+" "+p.ar[4][1]+" "+p.ar[4][2]+" "+p.ar[4][3]+" "+p.ar[4][4]);
}}
ISV-777 вне форума Ответить с цитированием
Старый 15.11.2011, 09:19   #2
AMDemon
Пользователь
 
Регистрация: 14.11.2011
Сообщений: 15
По умолчанию

Вот ты нагородил...

public char method1(){
char f;
System.arraycopy(ar[1], 0, s[0], 0, 4);
return f;
}
Ошибка! Ошибка! Возвращение неинициализированной переменной. Ну и дальше в том же духе. Вообще, поменять местами задача строки, по сути, не отличается от задачи поменять местами символы. Для этого нужна свободная переменная нужного типа (в данном случае char[]) и... и всё.

char[] buf = arr[1];
arr[1] = arr[4];
arr[4] = buf;

Что-то вроде этого, только копирование человеческое сделать.
AMDemon вне форума Ответить с цитированием
Старый 15.11.2011, 09:51   #3
it-webwork
Пользователь
 
Регистрация: 02.11.2011
Сообщений: 29
По умолчанию

Вот рабочий вариант. Надеюсь пригодиться
Код:
public class lr1 {
	
	char ar[][] = { { 'q', 'w', 'e', 'r', 't' }, { 'y', 'u', 'i', 'o', 'p' },
			{ 'a', 's', 'd', 'f', 'g' }, { 'h', 'j', 'k', 'l', 'z' },
			{ 'x', 'c', 'v', 'b', 'n' } };

	public static void main(String arg[]) {
		
		lr1 p = new lr1();
		p.printCharArray(); // печатаем исходный массив
		System.out.println();
		p.exchangeLine(1, 4); // меняем строки места
		// можно использовать более простой вариант как предложенно выше p.exchangeLine2(1, 4);
		p.printCharArray(); // печатаем изменённый массив
		
	}
	
	// меняем местами строки, номера которых передаём в аргументе
	public void exchangeLine(int pos1, int pos2){
		char temp[] = new char[5]; // временный массив для классического обмена
		System.arraycopy(ar[pos1], 0, temp, 0, 5); // копируем строку ar[pos1] в временный массив 
		System.arraycopy(ar[pos2], 0, ar[pos1], 0, 5); // перепезаписываем строку ar[pos1] строкой ar[pos2]
		System.arraycopy(temp, 0, ar[pos2], 0, 5); // записываем в строку ar[pos2] значение из временного массива
	}
	
	// меняем местами строки, номера которых передаём в аргументе
	public void exchangeLine2(int pos1, int pos2){
		char temp[]; // временный массив для классического обмена
		temp = ar[pos1];
		ar[pos1] = ar[pos2];
		ar[pos2] = temp;
	}
	
	// печатаем массив в цикле. На мой взгляд это удобней, чем ручками набирать :)
	public  void printCharArray(){
		for(char a[]:ar){
			for(char c:a)
				System.out.print(c+" ");
			System.out.println();
		}
	}
	
}
it-webwork вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Символьные массивы. Romario92 Общие вопросы C/C++ 2 29.10.2010 16:01
Символьные массивы aus Общие вопросы C/C++ 1 27.10.2010 12:31
символьные массивы и записи Cepgeich Паскаль, Turbo Pascal, PascalABC.NET 2 09.04.2010 00:01
Символьные массивы и строки. kGxDD Паскаль, Turbo Pascal, PascalABC.NET 1 24.04.2009 11:39
Одномерные символьные массивы chubakasun Помощь студентам 1 31.03.2009 02:26