Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » JAVA Решение задач

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Открыть новую тему     Написать ответ в эту тему

Kudja



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Предлагаю постить сюда все интересные задачки и их решения для новичков (и не только может быть).
Вот к примеру задачки:
1. Напишите программу проверки "java"-программы  на  элементарные синтаксические  ошибки,  такие  как  несоответствие  круглых, квадратных и фигурных скобок. Не забудьте о кавычках, как одиночных, так и двойных, и о комментариях.
2. Напишите программу удаления из "java"-программы  всех  комментариев. Не забывайте аккуратно  обращаться  с  "закавыченными" строками и символьными константами.
 
Кто какие их решения предложит???

Всего записей: 12 | Зарегистр. 15-12-2005 | Отправлено: 04:09 18-12-2005 | Исправлено: Kudja, 13:01 18-12-2005
Kudja



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну вот например я тут решение одной наваял - может кому интерестно будет, а может кто поинтересней предложит - т.к. я думаю можно и красивей как-нить
 
---------------------------------------------------------------------------------------------------------
import java.io.*;
 
/*
 * Created on 18.12.2005
 */
 
/**
 * @author Kudja
 */
 
public class Main {
 
    static void print(String s) {  
        System.out.println(s);
    }
 
    public static void main(String[] args) throws Exception {
        String Line;
        int temp, counter=0;
        int posCom = 0, posCom1 = 0, pos2Kavich = 0, posKavich = 0;
        int CountFig = 0, CountSquare = 0, CountOval = 0;
        boolean InComment = false;
        
        InputStream f1 = new FileInputStream("test.java");
        InputStreamReader f2 = new InputStreamReader(f1);
        LineNumberReader Reader = new LineNumberReader(f2);
        
        while ((f1.available() != 0)|(Reader.ready())){
            Line = " "+Reader.readLine()+" ";
            counter++;
            while ((InComment)&(Line.length() != 0)) {
                posCom1 = Line.indexOf("*/");
                if (posCom1 != -1){
                    Line=Line.substring(posCom1+2);
                    InComment=false;
                } else {
                    Line = "";
                }
            }
            posCom = 1;
            
            while ((posCom != 10000)|(posCom1 != 10000)|(posKavich != 10000)|(pos2Kavich != 10000)){
//                print("in");
                posCom = Line.indexOf("//");
                posCom1 = Line.indexOf("/*");
                posKavich = Line.indexOf("'");
                pos2Kavich = Line.indexOf('"');
                if (posCom == -1){
                    posCom = 10000;
                }
                if (posCom1 == -1){
                    posCom1 = 10000;
                }
                if (posKavich == -1){
                    posKavich = 10000;
                }
                if (pos2Kavich == -1){
                    pos2Kavich = 10000;
                }
//                print(" "+pos2Kavich+" "+posKavich+" "+posCom+" "+posCom1);
                if ((posCom < posCom1)&(posCom < posKavich)&(posCom < pos2Kavich)&(posCom != 10000)){
                    Line = Line.substring(0,posCom);
                }
                if ((posKavich < posCom)&(posKavich < posCom1)&(posKavich < pos2Kavich)&(posKavich != 10000)){
                    temp = Line.indexOf("'",posKavich+1);
                    if (temp == -1) {
                        temp = Line.length()-2;
                        print("Error in line "+counter+" не хватает одинарной кавычки");
                    }
                    if (temp > posKavich+2) {
                        print("Error in line "+counter+" больше одного символа между одинарными кавычками");
                    }
                    Line = Line.substring(0,posKavich)+Line.substring(temp+1);
                }
                if ((pos2Kavich < posCom)&(pos2Kavich < posCom1)&(pos2Kavich < posKavich)&(pos2Kavich != 10000)){
                    temp = Line.indexOf('"',pos2Kavich+1);
                    if (temp == -1) {
                        temp = Line.length()-2;
                        print("Error in line "+counter+" не хватает двойной кавычки");
                    }
                    Line = Line.substring(0,pos2Kavich)+Line.substring(temp+1);
                }
                if ((posCom1 < posCom)&(posCom1 < pos2Kavich)&(posCom1 < posKavich)&(posCom1 != 10000)){
                    temp = Line.indexOf("*/",posCom1+2);
                    if (temp == -1) {
                        InComment = true;
                        Line = Line.substring(0,posCom1);
                    } else {
                        Line = Line.substring(0,posCom1)+Line.substring(temp+2);
                    }
                }
//                print(" "+pos2Kavich+" "+posKavich+" "+posCom+" "+posCom1);
                //print(Line);
            }
            for (int i = 0; i < Line.length() ;i++){
                if (Line.charAt(i)=='{') {
                    CountFig++;
                }
                if (Line.charAt(i)=='}') {
                    CountFig--;
                }
                if (Line.charAt(i)=='(') {
                    CountOval++;
                }
                if (Line.charAt(i)==')') {
                    CountOval--;
                }
                if (Line.charAt(i)=='[') {
                    CountSquare++;
                }
                if (Line.charAt(i)==']') {
                    CountSquare--;
                }
            }
        }
        if (CountFig != 0){
            print("Error не хватает фигурных скобок ("+CountFig+")");
        }
        if (CountOval != 0){
            print("Error не хватает круглых скобок ("+CountOval+")");
        }
        if (CountSquare != 0){
            print("Error не хватает квадратных скобок ("+CountSquare+")");
        }
 
    }
}





не оверпость, если после тебя не отвечали. то используй кнопку редактировать. Большой код прячь в теге [more] посмотри как его использовать, если тема будет интересна другим, то прибью ее.

Всего записей: 12 | Зарегистр. 15-12-2005 | Отправлено: 01:19 19-12-2005 | Исправлено: ShIvADeSt, 06:13 19-12-2005
XDiaBLo



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Кернигана и Ричи начитался?  
 
"Упражнение 1.23. Напишите программу, убирающую все комментарии из любой Си- программы. Не забудьте должным образом обработать строки символов и строковые константы. Комментарии в Си не могут быть вложены друг в друга.  
 
Упражнение 1.24. Напишите программу, проверяющую Си-программы на элементарные синтаксические ошибки вроде несбалансированности скобок всех видов. Не забудьте о кавычках (одиночных и двойных), эскейп-последовательностях (\...) и комментариях. (Это сложная программа, если писать ее для общего случая.) "
 
Так для практики у них же и бери упражнения, хотя по Яве лучше у Брюса Эккеля в "Thinking in Java" упражнения бери, у него тоже интересно. Кстати на его сайте можно книги вполне бесплатно раздобыть, в электронном виде. www.BruceEckel.com

Всего записей: 244 | Зарегистр. 13-05-2004 | Отправлено: 07:08 19-12-2005
kakoc

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
вот еще задачка:
Дана строка текста, в которой сдлва разделены пробелами и двоеточиями. Нужно:
1)вычислить количество слов в строке, у которых четное количество букв, и вывести их на экран
2)вывести все слова в алфавитном порядке
3)из старой строки сыормировать новую,в которой буквы каждого слова пишутся через пробел, а затем вывести ее на экран
 
Помогите решить!!!

Всего записей: 77 | Зарегистр. 31-08-2003 | Отправлено: 06:39 30-01-2006
wInuX

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
1)вычислить количество слов в строке, у которых четное количество букв, и вывести их на экран  


Код:
 
String s = ...;
int count = 0;
for (String word : s.split("[: ]+")) {
     if ((word.length() & 1) == 0) {
         System.out.println(word);
         ++count;
     }
}
System.out.printf("Count: %d\n", count);
 

 

Цитата:
вывести все слова в алфавитном порядке


Код:
 
import java.util.Set;
import java.util.TreeSet;
 
...
 
String s = ...;
Set<String> set = new TreeSet<String>();
for (String word : s.split("[: ]+")) {
     set.add(word);
}
System.out.println(set);
 

 

Цитата:
из старой строки сыормировать новую,в которой буквы каждого слова пишутся через пробел, а затем вывести ее на экран


Код:
 
String s = ...;
StringBuilder sb = new StringBuilder();
for (String word : s.split("[: ]+")) {
     for(char c: word.toCharArray()) {
         sb.append(c);
         sb.append(' ');
     }
}
sb.deleteCharAt(sb.length() - 1);
System.out.println(sb.toString());
 

Всего записей: 155 | Зарегистр. 19-05-2005 | Отправлено: 12:04 30-01-2006
kakoc

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
больщое спасиб =)))
мне это очень пригодилось

Всего записей: 77 | Зарегистр. 31-08-2003 | Отправлено: 16:36 19-02-2006
polynomial

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А как бы из мидлета запустить jar/jad приложения...?

Всего записей: 111 | Зарегистр. 23-06-2005 | Отправлено: 08:16 01-03-2006
wInuX

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
В MIDP2.0 через MIDlet.platformRequest().

Всего записей: 155 | Зарегистр. 19-05-2005 | Отправлено: 10:54 01-03-2006
polynomial

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А если не трудно по подробнее описать...(хорошо бы пример применения MIDlet.platformRequest())

Всего записей: 111 | Зарегистр. 23-06-2005 | Отправлено: 14:47 01-03-2006 | Исправлено: polynomial, 14:49 01-03-2006
wInuX

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
http://developers.sun.com/techtopics/mobility/midp/ttips/platformRequest/
http://www.j2medev.com/api/midp/javax/microedition/midlet/MIDlet.html#platformRequest(java.lang.String)

Всего записей: 155 | Зарегистр. 19-05-2005 | Отправлено: 15:02 01-03-2006
primamaks



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Предлагаю переделать МОТОРОЛОВСКИЙ Mp3 плеер "Light Player" под Nokia 6230i, с поддержкой плей листов.  
 
Если это предложение ОТСТОЙ прошу сразу написать

Всего записей: 20 | Зарегистр. 01-05-2006 | Отправлено: 12:37 22-05-2006 | Исправлено: primamaks, 12:39 22-05-2006
Axot



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Очень нужна помощь в решении одного вопроса.  
С JAVA практически не знаком, поэтому хотелось бы узнать: возможно ли с помощью java написать программу следующего типа: пользователь вводит в форму значения параметров, а потом эти значения передаются и присваиваются параметрам запущенной программы. Т.е. для примера: пользователь в форме вводит число, а это число по нажатию кнопки передается на табло виндовому калькулятору.
 
Если это возможно, намекните с чего начинать, какие функции или методы есть для установки значений параметров запущенной программы.

Всего записей: 19 | Зарегистр. 25-01-2006 | Отправлено: 10:32 06-09-2007
HRyk



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Друзья, подскажите чайнику, как запустить-скомпилировать прогу на Java??? Скачал версию Java 2 SDK 1.4.2_05  , написал програмку вида :  
 
class a{  
public static void main (String[] args)  
{  
System.out.print("Privet");  
}  
}  
 
-указал переменной PATH путь к bin;  
-вызываю компилятор  javac a.java  в соответствующей папке  
 
а мне сообщается:  
 
1 error: can not read a.java  
 
В чем проблема???????  

Всего записей: 162 | Зарегистр. 04-11-2006 | Отправлено: 10:15 09-09-2007
XDiaBLo



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
HRyk
У меня получилось добиться такого-же сообщения об ошибке, только когда компилятор не в той папке запускал... Попробуй указать полный путь, если проблема не решается...
И где ты такую древнюю версию JDK взял? Уже 1.6.x давно вышла. Разве что если тебе именно 1.4 нужно изучить... Я вот под 1.5 пишу из служебной необходимости.

Всего записей: 244 | Зарегистр. 13-05-2004 | Отправлено: 08:25 10-09-2007
HRyk



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XDiaBLo
 
Спасибо! По поводу версии языка, особых пристрастий нет. Просто "Java", стали изучать только с этого сентября, была всего лишь одна лекция, так что пока немного торможу, даже на очевидных вещах.  Возможно в будущем перейду на версии посвежее.  
 
P.S. Не подскажешь, какую литературу предпочтительнее использовать при изучении?

Всего записей: 162 | Зарегистр. 04-11-2006 | Отправлено: 18:38 10-09-2007 | Исправлено: HRyk, 21:18 10-09-2007
HRyk



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Друзья, как в Eclipse (или при запуске из командной строки) подключить библиотеку Math  ?  
Пробовал так:
 java.util.Math.abs();  
 
и так :
 import java.util.Math()  
 
не получается  

Всего записей: 162 | Зарегистр. 04-11-2006 | Отправлено: 14:22 19-09-2007
HRyk



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Друзья, можно ли в Java установить какой-нибудь таймер, чтобы он измерял время выполнения цикла?

Всего записей: 162 | Зарегистр. 04-11-2006 | Отправлено: 12:52 22-09-2007
tisaik

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
HRyk
Попробуй считать систесное время до Цикла и после (в разные переменные). Разница значений и будет время выполнения Цикла.
 

Всего записей: 4 | Зарегистр. 02-10-2007 | Отправлено: 18:58 02-10-2007
HRyk



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Друзья, я написал текстовый редактор,  используя JTextArea. Как теперь открыть текстовый документ и его содержимое отобразить на JTextArea???

Всего записей: 162 | Зарегистр. 04-11-2006 | Отправлено: 22:37 16-10-2007
MoreSkit

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
пипл, плиииз хэлп ми!!!нужно 2 задачки решить:
 
1)вычислить отношение квадрата суммы элементов массива С(10) к сумме квадратов его элементов.
 
2)дан вещественный массив А(100). Заполнить вещественный массив С(100) i-ый элемент которого равен сумме первых i-элементов массива А.
 
Заранее благадарю=)
 
P.S. можно мне на мыло: moreskit@mail.ru

Всего записей: 3 | Зарегистр. 19-11-2007 | Отправлено: 17:13 19-11-2007
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » JAVA Решение задач


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru