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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.03.2014, 21:50   #1
Masafi
Форумчанин
 
Регистрация: 12.03.2011
Сообщений: 113
Вопрос Помощь новичку в JTextField

Начинаю изучать Java, написал консольное приложение:
Вводишь строку (русские буквы, пробелы)
Она делится на массив символов, и буквы заменяются попарно (а-б)

Программа то работает, но тут два нюанса:
1. В консоле винды так просто русские буковки не впишешь (крякозябра)
2. А полученный результат не скопируешь

Решаю "по быстрому" (наивный) погуглить ввод строки и какие нибудь операции с ней, и... Либо нифига не работает, либо не то, либо нифига не понял я. Вообщем что я хочу:
Ввод строки в поле
Нажатие enter
Вся строка из поля ввода чудесным образом преобразуется в String (можно сразу массив из char'ов)
Вывод результата с возможностью его копирования (JTextArea с "нетрогательностью" вроде как поможет)

Помогите кто чем может маленькому нубику :с

З.Ы. Спрашивайте! Все что знаю/смогу - на то отвечу.
З.Ы.Ы. Прилагаю скрипт консоли (работает нормально в эклипсе)

Код:
package tutorial;
import java.util.Scanner;

public class class1 {
	public static void main(String args[]) throws java.io.IOException {
		for(;;){
			@SuppressWarnings("resource")
			Scanner scEnter = new Scanner(System.in);
	        	String sEnter;
	        	sEnter = scEnter.nextLine();
			char cEnter[] = sEnter.toCharArray();
	       		int iFor = cEnter.length;
			for(int i = 0;i < iFor; i++){
				switch(cEnter[i]){
					case 'А':
						cEnter[i] = 'Б';
						break;
					case 'Б':
						cEnter[i] = 'А';
						break;
					case 'В':
						cEnter[i] = 'Г';
						break;
					.
					.
					.
					Тут перебор всех буковок (могу скинуть, если понадобиться)
					.
					.
					.
					case '7':
						cEnter[i] = '8';
						break;
					case '8':
						cEnter[i] = '7';
						break;
					case '9':
						cEnter[i] = '0';
						break;
					case '0':
						cEnter[i] = '9';
						break;
					default:
						cEnter[i] = '_';
						break;
				}
			}
			String sExit = new String(cEnter);
			System.out.println("Перевод строки в шифр: " + sExit);
		}
	}
}
Masafi вне форума Ответить с цитированием
Старый 18.03.2014, 01:02   #2
S1av0k
Пользователь
 
Регистрация: 26.11.2009
Сообщений: 87
По умолчанию

Не попроще ли:
Код:
import java.util.Scanner;

public class LetterExchanger {

    public static void main(String args[]){
        Scanner scEnter = new Scanner(System.in);
        String sEnter;
        sEnter = scEnter.nextLine();
        char cEnter[] = sEnter.toCharArray();
        int iFor = cEnter.length;

        for(int i = 0;i < iFor; i++){
            int charCode = cEnter[i];
            if (cEnter[i] == '9')
                cEnter[i] = 0;
            else if (cEnter[i] == '0')
                cEnter[i] = 9;
            else if (i % 2 == 0)
                cEnter[i] = (char) (charCode + 1);
            else
                cEnter[i] = (char) (charCode - 1);
        }

        String result = new String(cEnter);
        System.out.println(result);
    }
}
P.S. понял, что ошибся, но суть ясна, я надеюсь. Проверять нужно четность/нечетность кода символа и менять на код соседнего символа.
Помог - жми весы

Последний раз редактировалось S1av0k; 18.03.2014 в 01:36.
S1av0k вне форума Ответить с цитированием
Старый 30.03.2014, 21:07   #3
Masafi
Форумчанин
 
Регистрация: 12.03.2011
Сообщений: 113
Вопрос

Цитата:
Сообщение от S1av0k Посмотреть сообщение
Не попроще ли:
Код:
import java.util.Scanner;

public class LetterExchanger {

    public static void main(String args[]){
        Scanner scEnter = new Scanner(System.in);
        String sEnter;
        sEnter = scEnter.nextLine();
        char cEnter[] = sEnter.toCharArray();
        int iFor = cEnter.length;

        for(int i = 0;i < iFor; i++){
            int charCode = cEnter[i];
            if (cEnter[i] == '9')
                cEnter[i] = 0;
            else if (cEnter[i] == '0')
                cEnter[i] = 9;
            else if (i % 2 == 0)
                cEnter[i] = (char) (charCode + 1);
            else
                cEnter[i] = (char) (charCode - 1);
        }

        String result = new String(cEnter);
        System.out.println(result);
    }
}
P.S. понял, что ошибся, но суть ясна, я надеюсь. Проверять нужно четность/нечетность кода символа и менять на код соседнего символа.
Даже если так программа "легче", это не решает проблему работоспособности. Как можно реализовать ввод строки, ее обработку и вывод (с возможностью копирования) в оконной программе (апплете) с поддержкой русского языка, а не консоли. Или же, как можно реализовать такое же в консоли. Или, возможно, есть другой вариант решения. Но спасибо за идею.
Masafi вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выбор языка. Помощь новичку Кларк Gamedev - cоздание игр: Unity, OpenGL, DirectX 10 15.02.2014 09:39
Помощь новичку - Ассемблер Cat1986 Помощь студентам 3 08.07.2008 09:16
новичку нужна помощь с Паскалем Логинович Паскаль, Turbo Pascal, PascalABC.NET 5 23.12.2006 17:52