Заведём джаву. Внеурочная заметка №1.

Маленькая внеурочная заметка. Вызвана она, прежде всего, вопросами студентов, а зачем нам учить эту «джаву,» мы же будущие юристы, а не программисты. Где нам это пригодится?

Специально для группы ЮП-31 и публикую данную статью. Давайте рассмотрим простейший пример того, как же программирование может автоматизировать профессиональную деятельность юриста.

Вот такой случай: один человек просит у другого в долг деньги под расписку на определённое время. По окончании срока возвращать сумму не собирается, при этом является собственником гараж и автомобиля. Добросовестному заимодавцу ничего не остаётся, как подать исковое заявление в суд с тем, чтобы не деньгами, так автомобилем вернуть долг. Возникает спор имущественного характера, подлежащий оценки.

И тут, внезапно, заимодавец узнаёт, что подать исковое заявление — это не так просто. Нужно заплатить государственную пошлину. Эту самую пошлину впоследствии можно будет взыскать с должника, но чтобы подать иск изволь выложить здесь и сейчас. И если сумма займа была большой, то и пошлина будет не маленькой.

Размеры государственной пошлины по делам, рассматриваемым Верховным Судом Российской Федерации, судами общей юрисдикции, мировыми судьями регламентируются ст. 333.19 НК РФ:

1. По делам, рассматриваемым Верховным Судом Российской Федерации в соответствии с гражданским процессуальным законодательством Российской Федерации и законодательством об административном судопроизводстве, судами общей юрисдикции, мировыми судьями, государственная пошлина уплачивается в следующих размерах:

1) при подаче искового заявления имущественного характера, административного искового заявления имущественного характера, подлежащего оценке, при цене иска:

до 20 000 рублей — 4 процента цены иска, но не менее 400 рублей;

от 20 001 рубля до 100 000 рублей — 800 рублей плюс 3 процента суммы, превышающей 20 000 рублей;

от 100 001 рубля до 200 000 рублей — 3 200 рублей плюс 2 процента суммы, превышающей 100 000 рублей;

от 200 001 рубля до 1 000 000 рублей — 5 200 рублей плюс 1 процент суммы, превышающей 200 000 рублей;

свыше 1 000 000 рублей — 13 200 рублей плюс 0,5 процента суммы, превышающей 1 000 000 рублей, но не более 60 000 рублей;

Подсчитать — ничего сложного, когда таких исков 2 или 3. А когда их десятки? Вот этот процесс мы и автоматизируем, написав прооостенькую консольную программку на java.

Откроем Netbeans и выберем Файл — создать проект.

В открывшемся окне в левой части выберем Java, а в правой приложение Java. Нажмём Далее.

В открывшемся окне в разделе Имя проекта напишем, к примеру, Test1. Нажмём Готово.

Для автоматизации задачи нам понадобится вводить числа с клавиатуры. Для вывода данных на экран мы использовали System.out. (помните System.out.println(«Привет, мир?»);) Для ввода данных используется System.in. Но System.in позволяет считать с клавиатуры только коды символов. Чтобы обойти эту проблему и считывать большие порции данных за один раз, мы будем использовать более сложную конструкцию:

InputStream inputStream = System.in;
Reader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

String input = bufferedReader.readLine();

int chislo = Integer.parseInt(input);

Чтобы считать строку с клавиатуры, можно использовать объект BufferedReader. Но для этого в него нужно передать объект, из которого он будет вычитывать данные – System.in.

Однако System.in и BufferedReader не совместимы друг с другом, поэтому следует использовать переходник – еще один объект InputStreamReader.

Строка

 String input = bufferedReader.readLine(); 

считывает строку с клавиатуры.

Строка

 int chislo = Integer.parseInt(input); 

преобразует полученную строку в число.

Далее нам остаётся передать это число в метод, который и будет производить расчёт в соответствии с ст. 333.19 НК РФ

 result(chislo); 

Таким образом первый блок кода у нас выглядит примерно так:


package test1;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;

public class Test1
{
    
public static void main(String[] args) throws IOException {           
InputStream inputStream = System.in;
Reader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

String input = bufferedReader.readLine();

int chislo = Integer.parseInt(input);

result(chislo);
   
}

}

А что же такое throws IOException ? Это механизм исключений.

Исключение — это проблема(ошибка) возникающая во время выполнения программы. Исключения могут возникать во многих случаях, например:

Пользователь ввел некорректные данные.
Файл, к которому обращается программа, не найден.
Сетевое соединение с сервером было утеряно во время передачи данных.
И т.п.

Обработка исключительных ситуаций (exception handling) — механизм языков программирования, предназначенный для описания реакции программы на ошибки времени выполнения и другие возможные проблемы (исключения), которые могут возникнуть при выполнении программы и приводят к невозможности (бессмысленности) дальнейшей отработки программой её базового алгоритма.

throws — ключевое слово, которое прописывается в сигнатуре метода, и обозначающее что метод потенциально может выбросить исключение с указанным типом. IOException — тип исключения, об исключениях мы поговорим позже. Такая конструкция нам нужна потому, что пользователь может ввести не только цифры.

Теперь осталось описать метод result(); в который мы передадим переменную chislo.

Для того, чтобы не создавать объект в нашей простейшей программе, при создании метода мы будем использовать ключевое слово static. О статичных методах мы также будем говорить немного позже. Таким образом пока наш код выглядит примерно так:


package test1;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;

public class Test1
{
    
public static void main(String[] args) throws IOException {           
InputStream inputStream = System.in;
Reader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

String input = bufferedReader.readLine();

int chislo = Integer.parseInt(input);

result(chislo);
   
}
  
public static void result (int chislo){

     
  }
   
}

Осталось записать логику работы в метод public static void result (int chislo). Приступим. Итак:

при подаче искового заявления имущественного характера, административного искового заявления имущественного характера, подлежащего оценке, при цене иска:

//условно а

до 20 000 рублей — 4 процента цены иска, но не менее 400 рублей;


 if (chislo <= 20000){
      
       chislo = chislo * 4 / 100;
      
      if (chislo < 400){
          
          chislo = 400;
      } 

   }

То есть если переданная переменная chislo в методе result меньше либо равна 20000, умножаем значение на 0,04 — то есть высчитываем 4 процента от числа. Если это число меньше 400, то переменной задаётся значение 400.

Следующий пункт, условно назовём его б.

от 20 001 рубля до 100 000 рублей — 800 рублей плюс 3 процента суммы, превышающей 20 000 рублей;


 //пункт б
      else if (chislo >= 20001 && chislo <= 100000){
          
          chislo = chislo - 20000;
          
          chislo = chislo * 3 / 100;
          
          chislo = chislo + 800;
  
      }

Если переданное число больше или равно 20001 и при этом меньше 100000 из переданного значения вычитается 20000, а остаток умножается на 0,03, после чего прибавляет 800 рублей. Полученное значение и запишется в переменную chislo.

Условный пункт в.

от 100 001 рубля до 200 000 рублей — 3 200 рублей плюс 2 процента суммы, превышающей 100 000 рублей;

    else if (chislo >= 100001 && chislo <= 200000 ){
          
          chislo = chislo - 100000;
          
          chislo = chislo * 2 / 100;
          
          chislo = chislo + 3200;   
          
      }

Если переданное значение больше или равно 100001 и при этом меньше или равно 200000, то из переданного значение вычитается 100000, остаток умножается на 0,02 и к этому значению прибавляется 3200.

Условный пункт г.

от 200 001 рубля до 1 000 000 рублей — 5 200 рублей плюс 1 процент суммы, превышающей 200 000 рублей;


  //пункт г
      else if (chislo >= 200001 && chislo <= 1000000 ){
          
          chislo = chislo - 200000;
          
          chislo = chislo * 1 / 100;
          
     chislo = chislo + 5200;
     
      }

Если переданное значение больше или равно 200001 и при этом меньше или равно 1000000, то из переданного значение вычитается 200000, остаток умножается на 0,01 и к этому значению прибавляется 5200.

Условный пункт д.

свыше 1 000 000 рублей — 13 200 рублей плюс 0,5 процента суммы, превышающей 1 000 000 рублей, но не более 60 000 рублей;


   else if (chislo >= 1000001){
          
          chislo = chislo - 1000000;
          
          chislo = (int) (chislo * 0.005);
          
        chislo = chislo + 13200;

        if (chislo > 60000){
          
          chislo = 60000;
          
         }
        
      }

Если переданное значение больше или равно 1000001, то из переданного значение вычитается 1000000, остаток умножается на полпроцента (0.005) и к этому значению прибавляется 13200. Однако, если указанное число будет больше 60000 в переменную число запишется 60000. Обратите внимание на строку chislo = (int) (chislo * 0.005);

Значение 0.005 — это число с двойной точностью, то есть double. Переменная же chislo у нас имеет тип int — то есть целочисленное, копейки мы округляем. Поэтому в качестве учебного примера мы используем приведение типов, о чём мы ГОВОРИ ЗДЕСЬ В КОНЦЕ ЛЕКЦИИ.

Напишем ещё одно условие. Вдруг наше число вообще какое-то странно, что не выполнится ни один из условных операторов.

else {
          
chislo = 000; 
        
  }

То есть если вообще произошло нечто странное, в переменную chislo запишется три нолика.

Ну и вывод на экран:


System.out.println("Госпошлина составляет: " + chislo);
     
  }
   
}

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

package test1;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;

public class Test1
{
    
public static void main(String[] args) throws IOException {           
InputStream inputStream = System.in;
Reader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

String input = bufferedReader.readLine();

int chislo = Integer.parseInt(input);

result(chislo);
   
}
  
public static void result (int chislo){
  
    //пункт а
  if (chislo <= 20000){
      
       chislo = chislo * 4 / 100;
      
      if (chislo < 400){
          
          chislo = 400;
      } 

   }
        //пункт б
      else if (chislo >= 20001 && chislo <= 100000){
          
          chislo = chislo - 20000;
          
          chislo = chislo * 3 / 100;
          
          chislo = chislo + 800;
  
      }
     //пункт в
      else if (chislo >= 100001 && chislo <= 200000 ){
          
          chislo = chislo - 100000;
          
          chislo = chislo * 2 / 100;
          
          chislo = chislo + 3200;   
          
      }
      
    //пункт г
      else if (chislo >= 200001 && chislo <= 1000000 ){
          
          chislo = chislo - 200000;
          
          chislo = chislo * 1 / 100;
          
     chislo = chislo + 5200;
     
      }

    //пункт д
      else if (chislo >= 1000001){
          
          chislo = chislo - 1000000;
          
          chislo = (int) (chislo * 0.005);
          
        chislo = chislo + 13200;

        if (chislo > 60000){
          
          chislo = 60000;
          
         }
        
      }
  
    else {
          
        chislo = 000; 
        
           }
  
  System.out.println("Госпошлина составляет: " + chislo);
     
  }
   
}

Запустив её в Netbean вводим число и получим результат.

С графическим интерфейсом:


import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
 * Created by Maksim on 10.04.2017.
 */
public class gosposhlina {

    public static JButton b1;

    public static JLabel jl1, jl2;

    public static JTextField jt1;

    public static int i;

    public static void main(String[] args) {

        JFrame window = new JFrame("Подсчёт госпошлины");

        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        window.setSize(310, 150);

        window.setVisible(true);

     window.setResizable(false);

        JPanel panel = new JPanel();

        window.add(panel);

        panel.setLayout(new FlowLayout());

        b1 = new JButton("Рассчитать сумму");

        ActionListener actionListener = new TestActionListener();
        b1.addActionListener(actionListener);
        jl1 = new JLabel();
        jl2 = new JLabel("Введите цену искового заявления:");
        jt1 = new JTextField(10);

        panel.add(jl2);
        panel.add(jt1);
        panel.add(b1);
        panel.add(jl1);
    }

    public static class TestActionListener implements ActionListener {

        public void actionPerformed(ActionEvent e) {

            if(e.getSource()==b1){

                i = Integer.parseInt(jt1.getText());

                jl1.setText("Размер госпошлины составит: " +  result(i) + " рублей.");

            }
        }
    }


    public static int result (int chislo){
        //пункт а
        if (chislo <= 20000){

            chislo = chislo * 4 / 100;

            if (chislo < 400){

                chislo = 400;
            }

        }
        //пункт б
        else if (chislo >= 20001 && chislo <= 100000){

            chislo = chislo - 20000;

            chislo = chislo * 3 / 100;

            chislo = chislo + 800;

        }
        //пункт в
        else if (chislo >= 100001 && chislo <= 200000 ){

            chislo = chislo - 100000;

            chislo = chislo * 2 / 100;

            chislo = chislo + 3200;

        }

        //пункт г
        else if (chislo >= 200001 && chislo <= 1000000 ){

            chislo = chislo - 200000;

            chislo = chislo * 1 / 100;

            chislo = chislo + 5200;

        }

        //пункт д
        else if (chislo >= 1000001){

            chislo = chislo - 1000000;

            chislo = (int) (chislo * 0.005);

            chislo = chislo + 13200;

            if (chislo > 60000){

                chislo = 60000;
            }
        }
        else {
            chislo = 000;
        }
        return chislo;
    }

}




Поделиться ссылкой:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *