Отчет по программированию

Автор: Пользователь скрыл имя, 22 Ноября 2012 в 18:38, лабораторная работа

Описание работы

работа 3-го варианта

Содержание

Вариант 3 3
Постановка задачи. 3
Описание структуры классов. 3
Описание методов классов и спецификация локальных переменных. 3
Класс Lab2 3
Класс WorkWithArr 3
Класс WorkWithString 3
Таблица тестов. 3
Результаты тестирования. 4
Исходный код. 4
Класс Lab2 4
Класс WorkWithArr 5
Класс WorkWithString 7
Литература 9

Работа содержит 1 файл

Отчёт по лабораторной работе №2(Java).docx

— 85.65 Кб (Скачать)

 

Министерство образования и  науки Российской Федерации

ИРКУТСКИЙ ГОСУДАРСТВЕНЫЙ ТЕХНИЧЕСКИЙ  УНИВЕРСИТЕТ

факультет кибернетики

кафедра Вычислительной техники

ОТЧЕТ

к лабораторным работам по дисциплине

объектно-ориентированное программирование

Разработка классов и их использование


(наименование  темы)

 

Выполнил студент группы

ЭВМб-11-1

       
 

шифр группы

 

подпись

 

Фамилия И. О.

Проверил

         
 

должность

 

подпись

 

Фамилия И. О.


Иркутск 2012 г.

 

 

Оглавление

Вариант 3 3

Постановка задачи. 3

Описание структуры классов. 3

Описание методов классов и спецификация локальных переменных. 3

Класс Lab2 3

Класс WorkWithArr 3

Класс WorkWithString 3

Таблица тестов. 3

Результаты тестирования. 4

Исходный код. 4

Класс Lab2 4

Класс WorkWithArr 5

Класс WorkWithString 7

Литература 9

 

 

Задание

Вариант 3

    1. Отсортируйте значения в массиве.
    2. Определите, входит ли строка, указанная в командной строке, при запуске программы, в предложение.
    3. Удалите в предложении каждое третье слово.

Описание  структуры классов


Описание  методов классов и спецификация локальных переменных

Класс Lab2

main() – метод для запуска и работы  с командной строкой

 

Класс WorkWithArr

createObj() – статический метод для создания объекта класса с проверкой ввода длины массива, возвращающий ссылку на созданный объект

entered – строка для запоминания ввода с объекта класса scanner

genArray() – метод генерирующий массив

i – счётчик

arrSort() – метод сортирующий массив

i,j – счётчик

n – запоминает элемент массива

 

Класс WorkWithString

partOfSentence() – метод проверяющий принадлежность строки к предложению

 

delThirdWord() – метод удаляющий каждое третье слово в предложении

i,j – счётчик

n – счётчик слов

Таблица тестов

Входные данные

Выходные данные

arrLength

partOfText

Сообщение 1

Сообщение 2

Сообщение 3

1

0

Эйн

[]

Эйн - является частью предложения

Я не , каким оружием  вестись  Третья  война, но  Четвёртой будут  палки и . Эйнштейн

2

5

палки и камни

[5, 8, 10, 16, 18]

палки и камни - является частью предложения

Я не , каким оружием  вестись  Третья  война, но  Четвёртой будут  палки и . Эйнштейн

3

-1

третья

Была введена отрицательная  длина массива. 
Массив не был создан.

третья – не является частью предложения

Я не , каким оружием  вестись  Третья  война, но  Четвёртой будут  палки и . Эйнштейн


 

Результаты  тестирования

Тест  №1

Тест  №2

Тест  №3

Исходный код

Класс Lab2

package lab2;

 

import java.util.Scanner;

 

/**

*

* @author Администратор

*/

 

public class Lab2 {

    //public static WorkWithArr refer;

    /**

     * @param args the command line arguments

     */

    public static void main(String[] args) {

        WorkWithArr refer;

        WorkWithArr CopiedObj=new WorkWithArr(10);  //создаём обект класса WorkWithArr, для проверки конструктора копирования

        refer=WorkWithArr.createObj(CopiedObj);

        WorkWithString Task2=new WorkWithString();  //создаём обект класса WorkWithArr       

        refer.genArray();           //вызов метода для генерации массива типа int

        refer.arrSort();            //сортировка массива типа int

        Task2.partOfSentence();     //определяет  является ли частью часть текста  введённая строка

        Task2.delThirdWord();       //удаляет  каждое третье слово из предложения

    }

}

 

Класс WorkWithArr

package lab2;

 

import java.util.Arrays;

import java.util.Random;

import java.util.Scanner;

 

/**

*

* @author Администратор

*/

public class WorkWithArr {

    private int[] intArray;

    private int arrLength;   

    /**

     * Конструктор WorkWithArr создаёт объект для работы с массивами

     * @param arrLength - длина массива

     */

    public WorkWithArr(int arrLength){

        this.arrLength=arrLength;

    }

   

    /**

     * конструктор WorkWithArr присваивает 5 по умолчанию полю arrLength

     */

    public WorkWithArr(){

        this(5);

    }   

    /**

     * конструктор копирования. В качестве параметра копируемый экземпляр

     */

    public WorkWithArr(WorkWithArr copyable){

        this.arrLength=copyable.arrLength;

    }    

   

    /**

     * статический метод для создания  объекта с проверкой ввода  длины массива, возвращающий ссылку

     * на созданный объект

     */

    public static WorkWithArr createObj(WorkWithArr CopiedObj){

        String entered=null;

        System.out.println("Введите длину массива. Или default - по умолчанию(5). copy - для копирования с другого экземпляра");       

        try{

        Scanner sc=new Scanner(System.in);//создание объекта класса Scanner для ввода в консоли

        entered=sc.nextLine();

        WorkWithArr Task1=new WorkWithArr(Integer.parseInt(entered));  //создаём обект класса WorkWithArr

        return Task1;

        }catch(Exception e){

            if("default".equals(entered)){

                WorkWithArr Task1=new WorkWithArr();

                return Task1;

            }else{

                if("copy".equals(entered)){

                    WorkWithArr Task1=new WorkWithArr(CopiedObj);

                    return Task1;               

               

                }else{

                    WorkWithArr Task1=new WorkWithArr();

                    System.out.println("длина массива была автоматически выбрана по умолчанию(5)");

                    return Task1;

                }

            }

        }

       

    }

    /*

     * Генерация массива

     */

    public void genArray(){

        try{

            intArray=new int[arrLength]; //так назначается длина массива

            Random rand=new Random();

            for (int i = 0; i < intArray.length; i++) {

                intArray[i]=rand.nextInt(20);

            }

        }catch(java.lang.NegativeArraySizeException e){

            System.out.println("Была введена отрицательная длина массива");

        }

    }

   

    /**

     * сортировка

     */

   

    public void arrSort(){

        try {

            int n,i,j;

                for (i = 0; i < intArray.length; i++) {         

                    for (j = i+1; j < intArray.length; j++) {

                        if (intArray[i]>intArray[j]) {

                        n=intArray[i];   

                        intArray[i]=intArray[j];

                        intArray[j]=n;

                        }

                    }

                }

            System.out.println(Arrays.toString(intArray)); //объект Arrays выводит массив как строку  методом toString            

        } catch (Exception e) {

            System.out.println(e+" - Массив не был  создан!");

        }

 

    }

}

 

Класс WorkWithString

package lab2;

 

import java.util.Scanner;

 

/**

* Класс для работы со строками

* @author Администратор

  */

public class WorkWithString {

    private boolean itIsWord;   

    private String text="Я не знаю, каким оружием будет вестись Третья мировая война, но в Четвёртой будут использоваться палки и камни. Эйнштейн";

    private String partOfText="Третья мировая война";

   

   

    /**

     * Конструктор создаёт объект, проверяющий  принадлежит ли введённая подстрока  тексту

     * @param partOfText - подстрока

     */

    WorkWithString(String partOfText){

        this.partOfText=partOfText;

    }

   

    /*

     * Конструктор по умолчанию присваивает  полю строку "Третья мировая  война"

     */

    WorkWithString(){

        this("Третья мировая война");

    }     

   

    /*

     * Метод проверяющий принадлежность  строки к к предложению

     */

    public void partOfSentence(){

        System.out.println(text);

        Scanner sc=new Scanner(System.in,"CP1251");//создание  объекта класса Scanner для ввода  в консоли

        partOfText=sc.nextLine();       

       

        if (text.indexOf(partOfText)!=-1) {//indexOf возвращает -1 если символ или строка не  входит в исходную строку

            System.out.println(partOfText+" - является частью предложения");   

        }else{

            System.out.println(partOfText+" - не является частью предложения");

        } 

    }

   

    /*

     * Метод удаляющий каждое третье  слово в тексте

     */

    public void delThirdWord(){

        int n=0,i=0,j=0;

        while (i!=text.length()){      

            if ((text.charAt(i)!=' ')&&(text.charAt(i)!=',')&&(text.charAt(i)!='.')){

                if (itIsWord==false){

                    n++;

                    j=i; //запоминаем индекс первого символа в слове

                }

                itIsWord=true;

                if ((i==text.length()-1)&&(n==3)){ //удаление последнего слова, которое удовлетворяет условию удаления и заканчивается без знаков препинания

                    text=text.substring(0,j);       //

                    System.out.println(i);          //

                    i=text.length()-1;              //

                }                                   //

 

            }else{

                itIsWord=false;

                if (n==3) {

                    n=0;

                    text=text.substring(0,j)+text.substring(i,text.length());

                    i=j;

                }

            }                 

            i++;

        }

        System.out.println(text); //выводит преобразованную  строку

    }  

}

Литература

  1. Брюс Эккель «Философия Java» 4-е издание.
  2. Методические указания по выполнению лабораторных работ. Изд. 1-ое.  Составил В.Л. Аришинский.

Информация о работе Отчет по программированию