Урок 19. Пишем простой калькулятор
Re: Урок 19. Пишем простой калькулятор
Можно вопрос еще. подскажите как процедуру и функцию написать и в какой часть кода разместить. или дайте ссылку на материал где пример описания и вызова процедуры. в инете не нашел. и в книжках нет. слова procedure и function в эклипсе даже не распознается.
Re: Урок 19. Пишем простой калькулятор
Я угараю . Я не злорадствую, не поймити, просто смешно. И так, что на счёт вопроса... я так понял вы переходите с делфи или с паскаля (или ещё с чего то древнего чего я не знаю)?! Начните читать что то про ООП, простейшая книга по джаве и всё проеснится. А на перёд скажу, что в джаве нету таких понятий как процедура или функцияG_O_R писал(а):Можно вопрос еще. подскажите как процедуру и функцию написать и в какой часть кода разместить. или дайте ссылку на материал где пример описания и вызова процедуры. в инете не нашел. и в книжках нет. слова procedure и function в эклипсе даже не распознается.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 19. Пишем простой калькулятор
Да с дельфи) ну мне надо несколько кусков кода чтоб потом их вызвать. процедуры. ооп знаю. ну на джаве не писал вот и не знаю) мне нужен аналог какой нить чтоб не писать одно и тоже а только вызвать из разных мест. книги есть для андроид, но там нету. если знайте хотя бы скажите команду я поищу в инете.
Re: Урок 19. Пишем простой калькулятор
методы это и есть процедуры и функции. Процедура:
параметр void ничего не возвращает и по этому можно сравнить с процедурой.
метод возвращает int, аналог функции
Методы прописываете в классе, например в классе Activity или же в отдельном, где душа пожелает.
Код: Выделить всё
public void myMethod() {}
Код: Выделить всё
public int myMethod() {... return 10;}
Методы прописываете в классе, например в классе Activity или же в отдельном, где душа пожелает.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 19. Пишем простой калькулятор
Спасибо) а говорили нет тут процедур))) просто название другое)
Re: Урок 19. Пишем простой калькулятор
Всем доброго времени суток!
Вопрос больше относится к EditText.
Мне нужно ввести в поле число с точностью до десятых. Проконтроллировать вывод на экрна я могу, а вот как проконтроллировать пользователя? Он ведь может и 100 знаков после запятой ввести.
Всем заранее спасибо!
Вопрос больше относится к EditText.
Мне нужно ввести в поле число с точностью до десятых. Проконтроллировать вывод на экрна я могу, а вот как проконтроллировать пользователя? Он ведь может и 100 знаков после запятой ввести.
Всем заранее спасибо!
Re: Урок 19. Пишем простой калькулятор
Здравствуйте! искал по форумам и сайтам и опять не нашел(((и узнать команды как найти значение по таблице кодировки символов и обратно. в дельфи chr и ord. Резак может станем компаньонами?) есть идея и есть прога, надо перевести в андроид и улучшить)
Re: Урок 19. Пишем простой калькулятор
Android, как и JAVA работает со строками Unicode, все символы строк представлены в виде в виде двухбайтного char, в нем и хранится собственно значение Unicode данного символа. С ним можно работать как с числом (позволяет любые арифметические и логические операции, сравнения и т.п), фактически он соответствует беззнаковому short (других беззнаковых числовых типов в JAVA не существует).
Из типа String можно получить массив char[] каждый элемент которого и будет содержать код символа в Unicode
Из типа String можно получить массив char[] каждый элемент которого и будет содержать код символа в Unicode
Re: Урок 19. Пишем простой калькулятор
всё правильно подмечено
G_O_R , с конкретными предложениями пиши в ЛС
G_O_R , с конкретными предложениями пиши в ЛС
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 19. Пишем простой калькулятор
Люди, а как можно сделать так чтобы при вводе текста в EditText он печатался справа налево?
З.Ы. По поводу кол-во знаков после запятой, никто ничего не знает? Просто спрашивал на 4pda... там тоже тишина....
З.Ы. По поводу кол-во знаков после запятой, никто ничего не знает? Просто спрашивал на 4pda... там тоже тишина....
Re: Урок 19. Пишем простой калькулятор
что бы справа на лево нужно в проперти добавить android:gravity="right"nubodroid писал(а):Люди, а как можно сделать так чтобы при вводе текста в EditText он печатался справа налево?
З.Ы. По поводу кол-во знаков после запятой, никто ничего не знает? Просто спрашивал на 4pda... там тоже тишина....
по поводу форматирования то нужно использовать интерфейс InputFilter.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 19. Пишем простой калькулятор
Спасибо. Сейчас попробую... На счет форматирования... нашел на stackoverflow...rezak90 писал(а):что бы справа на лево нужно в проперти добавить android:gravity="right"nubodroid писал(а):Люди, а как можно сделать так чтобы при вводе текста в EditText он печатался справа налево?
З.Ы. По поводу кол-во знаков после запятой, никто ничего не знает? Просто спрашивал на 4pda... там тоже тишина....
по поводу форматирования то нужно использовать интерфейс InputFilter.
Код: Выделить всё
EditText txtInput = (EditText) findViewById(R.id.txtInput);
txtInput.addTextChangedListener(new TextWatcher()
{
public void afterTextChanged(Editable edt)
{
String temp = edt.toString();
int posDot = temp.indexOf(".");
if (posDot <= 0) return;
if (temp.length() - posDot - 1 > 2)
{
edt.delete(posDot + 3, posDot + 4);
}
}
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {}
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {}
});
Re: Урок 19. Пишем простой калькулятор
AndreyI писал(а):Android, как и JAVA работает со строками Unicode, все символы строк представлены в виде в виде двухбайтного char, в нем и хранится собственно значение Unicode данного символа. С ним можно работать как с числом (позволяет любые арифметические и логические операции, сравнения и т.п), фактически он соответствует беззнаковому short (других беззнаковых числовых типов в JAVA не существует).
Из типа String можно получить массив char[] каждый элемент которого и будет содержать код символа в Unicode
То что в юникоде я знаю. прочел уже. там представление вроде /u+число. значит я так понял мою строку типа string присвоить массиву типа char. потом сделать без знаковую переменную short и произвести арифметические действия и потом все обратно чтоб собрать строку
Re: Урок 19. Пишем простой калькулятор
Что не так в этом коде. почему не выдает нечего. даже ошибку.
public void shifr1(int key){
char[] inf= new char[160];
short Ord;
String outf = "";
outf.isEmpty();
if (etText1.length()==0){
Toast.makeText(this, "Нет символов для шифрования", Toast.LENGTH_LONG).show();
}
else {
if(key==1){
for (int j = 0; j == etText1.length(); j++) {
//проверка
// if (inf[j]>='a' & inf[j]<='z' | inf[j]>='A' & inf[j]<='Z' | inf[j]>='а' & inf[j]<='я' | inf[j]>='А' & inf[j]<='Я' | inf[j]>='0' & inf[j]<='9') {
//узнаем код символа и добавляем ключ у нас он =7
Ord=(short) (inf[j]+7);
//обратно находим значение символьное из числа и пишет обратно в массив ну строку
inf[j]=(char) Ord;
//inf[j]=chr(t);
//тут счетчик собирает все символы уже шифрованные в строку
outf+=inf[j];
// etText1.setText(outf);
// }
}
}
}
etText1.setText(outf.toString());
}
public void shifr1(int key){
char[] inf= new char[160];
short Ord;
String outf = "";
outf.isEmpty();
if (etText1.length()==0){
Toast.makeText(this, "Нет символов для шифрования", Toast.LENGTH_LONG).show();
}
else {
if(key==1){
for (int j = 0; j == etText1.length(); j++) {
//проверка
// if (inf[j]>='a' & inf[j]<='z' | inf[j]>='A' & inf[j]<='Z' | inf[j]>='а' & inf[j]<='я' | inf[j]>='А' & inf[j]<='Я' | inf[j]>='0' & inf[j]<='9') {
//узнаем код символа и добавляем ключ у нас он =7
Ord=(short) (inf[j]+7);
//обратно находим значение символьное из числа и пишет обратно в массив ну строку
inf[j]=(char) Ord;
//inf[j]=chr(t);
//тут счетчик собирает все символы уже шифрованные в строку
outf+=inf[j];
// etText1.setText(outf);
// }
}
}
}
etText1.setText(outf.toString());
}
Re: Урок 19. Пишем простой калькулятор
По образу и подобию написал, логику шифрования не менял
Код: Выделить всё
public void shifr1(int key) {
CharSequence inf; //Сюда будем получать входную строку
StringBuffer stringbuff = new StringBuffer(); //А сюда выходную
if (etText1.length() == 0) {
Toast.makeText(this, "Нет символов для шифрования",
Toast.LENGTH_LONG).show();
} else {
inf = etText1.getText(); //Считываем строку из текстового поля
if (key == 1) {
for (int j = 0; j < inf.length(); j++) {
char chr = inf.charAt(j); //Считываем символ
// проверка
if ((chr >= 'a' && chr <= 'z' )|| (chr >= 'A' &&chr <= 'Z')
||( chr >= 'а' && chr <= 'я' )|| (chr >= 'А' && chr <= 'Я')
||( chr >= '0' && chr <= '9')) {
// узнаем код символа и добавляем ключ у нас он =7
// обратно находим значение символьное из числа и пишет
// обратно в массив ну строку
chr = (char) (chr + 7);
// тут счетчик собирает все символы уже шифрованные в
// строку
stringbuff.append(chr);
}
}
etText1.setText(stringbuff);
}
}
}
Re: Урок 19. Пишем простой калькулятор
у меня в начал было srtingbuff но ругался на него и предлагал менять. хотелось бы узнать всё таки в чем ошибка в моем коде?
Спасибо Андрей попробую сейчас твой вариант)
Спасибо Андрей попробую сейчас твой вариант)
Re: Урок 19. Пишем простой калькулятор
Спасибо Андрей)работает) не подскажите максимальное число знаков в юникоде?))) ну чтоб вдруг за рамки таблицы не вышло))))
Re: Урок 19. Пишем простой калькулятор
помогите еще раз с кодом))) она должна делать следующее, должна взять текст записать в массив. потом одномерный массив делить по 5 элементам и эти 5 элементов менять местами, если скажем 23 символа то отставшие 3 элемента должны записаться в обратном порядке, то есть алгоритм перестановки. у меня он не выдает нечего. при нажатии или не происходит нечего или пусто. несколько раз менял типы переменных и поменял циклы. не выводит все равно. Спасибо заранее.
public void perest (int s1, int s2, int s3, int s4, int s5, int key2Pos, int key3){
// String st="";
StringBuffer stringbuff = new StringBuffer(); //А сюда выходную
// String outf2=""; //А сюда выходную
int p,d,g;
g=5;
int ar [] = {s1,s2,s3,s4,s5}; //массив содержащий маску перестановок
char inf1 [] ; //Сюда будем получать входную строку
char inf2 [] ; //Сюда будем получать входную строку
if ((key2Pos==1) || (key2Pos==3) ||(key2Pos==4)){
if (etText1.length() == 0) {
Toast.makeText(this, "Нет символов для шифрования",
Toast.LENGTH_LONG).show();
} else {
int n= etText1.length();
inf1 = new char [n];
inf2 = new char [n];
p= (int) ( n / g);
d = (int) ( n % g);
for (int k = 0; k<n; k++){
inf1[k]= etText1.getText().charAt(k); //Считываем строку из текстового поля
}
for (int m = 0; m < p*g; m++) {
//цикл по количеству групп d-1 потому что изначально
//вот тут мы получаем некий индекс. Но нам нужно изначально, чтобы было с начала
// строки вот тут поэтому важно, чтобы вот эта часть начиналась с нуля
// так как в делфи все начинается с единицы, поставили -1.
for (int l=1; l==5; l++ ){
inf2[l] =inf1[m*g+ar[l]]; //в этой строчке вся сила алгоритма.
//мы берем данные по группно. m*g - это количество пройденных символов.
//они нам не нужны, поэтому мы их пропускаем. И нужно
//записать переставленные символы. Для этого и нужен был массив. То есть
//итый элемент массива - это не i, а то, что мы захотим))
stringbuff.append(inf2[l]);
}
//однако описанный алгоритм хорош когда длина строки делится нацело на длину
//группы. А если нет, то с оставшимися символами надо что-то делать
//вот я и делаю...записываю их в обратном порядке. Тут другую перестановку
//не придумать
}
if(p!=0) {
// st="";
for (int m = p*g; m == n; m++) {
for (int l=1; l == p; l++ ){
stringbuff.append(inf1[g*d+(p-l+1)]);
// st=st+inf1[g*d+(p-l+1)];
// outf2=outf2+st;
}
}
}
}
// etText1.getText().clear();
etText1.setText(stringbuff);
}
}
public void perest (int s1, int s2, int s3, int s4, int s5, int key2Pos, int key3){
// String st="";
StringBuffer stringbuff = new StringBuffer(); //А сюда выходную
// String outf2=""; //А сюда выходную
int p,d,g;
g=5;
int ar [] = {s1,s2,s3,s4,s5}; //массив содержащий маску перестановок
char inf1 [] ; //Сюда будем получать входную строку
char inf2 [] ; //Сюда будем получать входную строку
if ((key2Pos==1) || (key2Pos==3) ||(key2Pos==4)){
if (etText1.length() == 0) {
Toast.makeText(this, "Нет символов для шифрования",
Toast.LENGTH_LONG).show();
} else {
int n= etText1.length();
inf1 = new char [n];
inf2 = new char [n];
p= (int) ( n / g);
d = (int) ( n % g);
for (int k = 0; k<n; k++){
inf1[k]= etText1.getText().charAt(k); //Считываем строку из текстового поля
}
for (int m = 0; m < p*g; m++) {
//цикл по количеству групп d-1 потому что изначально
//вот тут мы получаем некий индекс. Но нам нужно изначально, чтобы было с начала
// строки вот тут поэтому важно, чтобы вот эта часть начиналась с нуля
// так как в делфи все начинается с единицы, поставили -1.
for (int l=1; l==5; l++ ){
inf2[l] =inf1[m*g+ar[l]]; //в этой строчке вся сила алгоритма.
//мы берем данные по группно. m*g - это количество пройденных символов.
//они нам не нужны, поэтому мы их пропускаем. И нужно
//записать переставленные символы. Для этого и нужен был массив. То есть
//итый элемент массива - это не i, а то, что мы захотим))
stringbuff.append(inf2[l]);
}
//однако описанный алгоритм хорош когда длина строки делится нацело на длину
//группы. А если нет, то с оставшимися символами надо что-то делать
//вот я и делаю...записываю их в обратном порядке. Тут другую перестановку
//не придумать
}
if(p!=0) {
// st="";
for (int m = p*g; m == n; m++) {
for (int l=1; l == p; l++ ){
stringbuff.append(inf1[g*d+(p-l+1)]);
// st=st+inf1[g*d+(p-l+1)];
// outf2=outf2+st;
}
}
}
}
// etText1.getText().clear();
etText1.setText(stringbuff);
}
}
Re: Урок 19. Пишем простой калькулятор
Такие коды лучше дебажить пошагово и смотреть значения переменных на каждом шаге, собственно, так делается в любом языке программирования, если код содержит вычисления.
Поставьте точку останова в начале метода и запустите программу в режиме отладки.
Поставьте точку останова в начале метода и запустите программу в режиме отладки.
Re: Урок 19. Пишем простой калькулятор
Трудно от дельфи перейти на джава за неделю) всё время забываю что тут индексы начинаются с 0. но в общем хорошая вещь) сделал алгоритм записи в двумерный массив текста из едита( из одномерного массива). если кому надо выложу. Спасибо за совет)