Java

Пользователь

от nekikryu , в категории: Java , 2 года назад
2 ответа последнее сообщение 3 дня назад от autumn_parker

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

Все настраивается через Docker. Build Camunda:

1
2
FROM camunda/camunda-bpm-platform:run-7.17.0
COPY production.yml /camunda/configuration/production.yml

.yml setup file:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
camunda.bpm:
  webapp:
    csrf:
      enable-same-site-cookie: true
      same-site-cookie-option: STRICT
    header-security:
      hsts-disabled: false
      content-security-policy-value: base-uri 'self';
        default-src 'self' 'unsafe-inline' 'unsafe-eval';
        img-src 'self' data:;
        block-all-mixed-content;
        form-action 'self';
        frame-ancestors 'none';
        object-src 'none';
        sandbox
        allow-forms
        allow-scripts
        allow-same-origin
        allow-popups
authorization:
    enabled: true
    user-id-claim: sub
    administratorGroupName: camunda-admin
    authorizationCheckRevokes: never
  generic-properties:
    properties:
      enable-password-policy: true
   admin-auth:
     enabled: true
     administrator-user-name: admin
     administrator-group-name: admins

Проект строится, но авторизация до сих пор не работает, судя по документации, то все эти настройки максимум, что нужно сделать, чтобы он заработал. Кто настраивал авторизацию, подскажите что не так?

Пользователь

от good20045 , в категории: Java , 2 года назад
2 ответа последнее сообщение 4 дня назад от hermina.hauck

Форумчане выручайте,не имею не малейшего понятия как это выполнить без условных операторов.

Полное задание:

Известны оценки по информатике каждого из 20 учеников класса.В начале списка перечислены все пятерки,затем

все остальные оценки.Сколько учеников имеют по информатике оценку 5?Условный оператор не использовать.Рассмотреть два

случая:

1)известно,что пятерки имеют не все ученики класса;

2)допускается,что пятерки могут иметь все ученики класса

Выполни на c# и обьясни каждую строчку.

K

Пользователь

от kotos , в категории: Java , 2 года назад
2 ответа последнее сообщение 5 дней назад от brooklyn

Я хочу создать приложения, которая при помощи камеры сканирует QR код на учебном месте и отмечает, что он был на занятиях. Но проблема в том, что я новичок в Android Studio. Мне нужна реализовать RecyclerView, который имеет id - scheduleRecycler так, чтобы он показывал содержимое базы данных, в виде посещаемости.



Мне бы ещё не помещала помощь как правильно настроит таблицы в базе данных с помощью phpMyAdmin.




Пользователь

от aleksandrgrebeskov27 , в категории: Java , 2 года назад
1 ответ последнее сообщение 6 дней назад от vladimir

где можно установить java, можете дать ссылку или другое?

Пользователь

от olegcelysev962 , в категории: Java , 2 года назад
2 ответа последнее сообщение 6 дней назад от stanford_mosciski

Как вернуть часть массива в java, например есть массив целых чисел от 1 до 7, как вернуть элементы с 3 по 7

Пользователь

от allaselenginskaa , в категории: Java , год назад
2 ответа последнее сообщение 7 дней назад от wilburn

Создается приложение бухгалтерии. там программа должна предлагать 6 действий. 1) считать все месячные ответы 

2) считать годовой отчет 

3) сверить отчеты 

4) вывести информацию обо всех месячных отчетах (название месяца, самый прибыльный товар и самая большая трата)

5) вывести информацию о годовом отчете (год, прибыль, средних расход и средних доход) 

6) выход из приложения


Меню должно лежать в классе Main


[JAVA]

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import java.util.Scanner;

public class Main {

  public static void main(String[] args) {

    ReportEngine reportEngine = new ReportEngine();
    Scanner scanner = new Scanner(System.in);


    while (true) {
      printMenu();

      int userInput = scanner.nextInt();
      if (userInput == 1) {
        System.out.println("Выполняется ко***** 1");

      } else if (userInput == 2) {
        System.out.println("Выполняется ко***** 2");

      } else if (userInput == 3) {
        System.out.println("Выполняется ко***** 3");
        reportEngine.check();
      } else if (userInput == 4) {
      System.out.println("Выполняется ко***** 4");
        System.out.println("Самый прибыльный товар " + reportEngine.getTopProduct());
        System.out.println(reportEngine.biggerExpense());
      } else if (userInput == 5) {
        System.out.println("Выполняется ко***** 5");
        System.out.println("Прибыль по каждому месяцу составляет: " + reportEngine.profit());
        System.out.println("Средний расход в год составляет: " + reportEngine.averageExpense());
        System.out.println("Средний доход в год составляет: " + reportEngine.averageIncome());
      } else if (userInput == 6) {
        System.out.println("Пока!");
        scanner.close();
        return;
      } else {
        System.out.println("Такой команды нет");
      }
    }
  }

  public static void printMenu() {
    System.out.println("1) Считать все месячные отчёты ");
    System.out.println("2) Считать годовой отчёт");
    System.out.println("3) Сверить отчёты");
    System.out.println("4) Вывести информацию обо всех месячных отчётах");
    System.out.println("5) Вывести информацию о годовом отчёте");
    System.out.println("6) Выход из приложения");
  }

}

[/JAVA]


Класс FileReader для чтения данных


[JAVA]

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;

public class FileReader {
  ArrayList<String> readFileContents(String fileName) {
    String path = "./resources/" + fileName;
    try {
      return new ArrayList<>(Files.readAllLines(Path.of(path)));
    } catch (IOException e) {
      System.out.println("Невозможно прочитать файл с отчётом. Возможно, файл отсутствует в нужной директории.");
      return new ArrayList<>();
    }
  }
}

[/JAVA]


Для считывания месячных отчетов пользуюсь классом MonthlyReport


[JAVA]

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import java.util.ArrayList;

public class MonthlyReport {
  FileReader fileReader = new FileReader();
  public ArrayList<MonthTotalPerYear> monthTotalPerYears = new ArrayList<>();

  public MonthlyReport() {
    for (int i = 1; i <= 3; i++) {
      String paths = "m.20210" + i + ".csv";
      ArrayList<String> lines = fileReader.readFileContents(paths);
      String[] lineContents = lines.get(i).split("\n");
      for (int j = 1; j < lineContents.length; j++) {
        String line = lineContents[j]; //Коньки,TRUE,2,2000
        String[] parts = line.split(",");
        String name = parts[0];
        boolean is_expense = Boolean.parseBoolean(parts[1]);
        int quantity = Integer.parseInt(parts[2]);
        int price = Integer.parseInt(parts[3]);

        MonthTotalPerYear monthTotalPerYear = new MonthTotalPerYear(name, is_expense, quantity, price);
        monthTotalPerYears.add(monthTotalPerYear);

      }
    }

  }

}

[/JAVA]


И классом MonthlyTotalPerYear, где создаю конструктор в соответствии с отчетом


[JAVA]

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
public class MonthTotalPerYear {
  public String name;
  public boolean is_expense;
  public int quantity;
  public int price;

  public MonthTotalPerYear(String name, boolean is_expense, int quantity, int price) {
    this.name = name;
    this.is_expense = is_expense;
    this.quantity = quantity;
    this.price = price;
  }
}

[/JAVA]


Для считывания годового отчета использую класс YearlyReport


[JAVA]

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import java.util.ArrayList;

public class YearlyReport {
  public ArrayList<Transaction> transactions = new ArrayList<>();
  FileReader fileReader = new FileReader();

  public YearlyReport() {
    ArrayList<String> lines = fileReader.readFileContents("y.2021.csv");
    for (int i = 1; i < lines.size(); i++){
      String[] lineContents = lines.get(i).split("\n");
      for (int j = 1; j < lineContents.length; j++) {
        String line = lineContents[j]; //01,1593150,false
        String[] parts = line.split(",");
        String month = parts[0];
        int amount = Integer.parseInt(parts[1]);
        boolean isExpense = Boolean.parseBoolean(parts[2]);

        Transaction transaction = new Transaction(month, amount, isExpense);
        transactions.add(transaction);
      }
    }


  }

}

[/JAVA]


И класс Transaction с созданием конструктора


[JAVA]

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
public class Transaction {

  public String month;
  public int amount;
  public boolean isExpense;

  public Transaction(String month, int amount, boolean isExpense) {
    this.month = month;
    this.amount = amount;
    this.isExpense = isExpense;
  }


}

[/JAVA]


Конструктора созданы на основе того, как выглядят строки в отчетах. 


Отчет за январь:

item_name,is_expense,quantity,unit_price

Коньки,TRUE,50,2000

Новогодняя ёлка,TRUE,1,100000

Ларёк с кофе,TRUE,3,50000

Аренда коньков,FALSE,1000,180

Продажа билетов,FALSE,3500,300

Продажа кофе,FALSE,2421,150


Отчет за февраль:

item_name,is_expense,quantity,unit_price

Коньки,TRUE,2,2000

Заточка коньков,TRUE,50,200

Аренда коньков,FALSE,1000,180

Продажа билетов,FALSE,1500,300

Продажа кофе,FALSE,1200,150


Отчет за март:

item_name,is_expense,quantity,unit_price

Заточка коньков,TRUE,50,200

Разморозка ледопарка,TRUE,1,20000

Организация специального концерта,TRUE,1,60000

Продажа билетов,FALSE,2500,300

Продажа кофе,FALSE,1200,150

Билеты на специальный концерт,FALSE,300,5000


Годовой отчет:

month,amount,is_expense

01,1593150,false

01,350000,true

02,810000,false

02,14000,true

03,90000,true

03,2430000,false




Дальше описывала методы в классе ReportEngine 

(топовый продукт, самая большая трата, прибыль, средний доход и расход и сверка (check) но чек не дописан, я не понимаю как его писать)



[JAVA]

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
import java.util.ArrayList;
import java.util.HashMap;

public class ReportEngine {
  public MonthlyReport monthlyReport;
  public YearlyReport yearlyReport;

  public ReportEngine() {
    monthlyReport = new MonthlyReport();
    yearlyReport = new YearlyReport();
  }

  public String getTopProduct() {
    HashMap<String, Integer> fregs = new HashMap<>();
    for (MonthTotalPerYear monthTotalPerYear : monthlyReport.monthTotalPerYears) {
      fregs.put(monthTotalPerYear.name, fregs.getOrDefault(monthTotalPerYear.name, 0) + monthTotalPerYear.quantity);
    }
    String maxName = null;
    for (String name : fregs.keySet()) {
      if (maxName == null) {
        maxName = name;
        continue;
      }
      if (fregs.get(maxName) < fregs.get(name)) {
        maxName = name;
      }
    }
    return maxName;
  }

  public String biggerExpense() {
    HashMap<String, Integer> expense = new HashMap<>();
    for (MonthTotalPerYear monthTotalPerYear : monthlyReport.monthTotalPerYears) {
      if (monthTotalPerYear.is_expense) {
        expense.put(monthTotalPerYear.name, monthTotalPerYear.price);
      }
    }
    String nameExpense = null;
    for (String name : expense.keySet()) {
      if (nameExpense == null) {
        nameExpense = name;
        continue;
      }
      if (expense.get(nameExpense) < expense.get(name)) {
        nameExpense = name;
      }
    }
    System.out.println("Самая большая сумма траты - " + expense.get(nameExpense));
    return nameExpense;
  }

  public HashMap<String, Integer> profit() {
    HashMap<String, Integer> product = new HashMap<>();
    for (Transaction transaction : yearlyReport.transactions) {
      if (!(transaction.isExpense)) {
        product.put(transaction.month, transaction.amount);
      }
    }
    String maxTransaction = null;
    for (String name : product.keySet()) {
      if (maxTransaction == null) {
        maxTransaction = name;
        continue;
      }
      if (product.get(maxTransaction) < product.get(name)) {
        maxTransaction = name;
      }
    }
    return product;
  }

  public Integer averageIncome() {
    HashMap<String, Integer> product = new HashMap<>();
    for (Transaction transaction : yearlyReport.transactions) {
      if (!(transaction.isExpense)) {
        product.put(transaction.month, transaction.amount);
      }
    }
    Integer result = null;
    for (Integer sum : product.values()) {
      result += sum;
    }
    return result;
  }

  public Integer averageExpense() {
    HashMap<String, Integer> product = new HashMap<>();
    for (Transaction transaction : yearlyReport.transactions) {
      if (transaction.isExpense) {
        product.put(transaction.month, transaction.amount);
      }
    }
    Integer result = null;
    for (Integer sum : product.values()) {
      result += sum;
    }
    return result;
  }


  public boolean check() {
    if (monthlyReport.monthTotalPerYears.isEmpty()) {
      System.out.println("Ошибка! Для начала необходимо считать файлы! :)");
      return false;
    /* } else {

      if ((sum_income == sum_incomeYear) && (sum_expense == sum_expenseYear)){
        System.out.println("Успех! Сверка отчётов прошла успешно!");
      } else {
        System.out.println("Ошибка! Сверка отчётов обнаружела несоответствие в ");
      }
    }*/

    }
    return false;
  }
}

[/JAVA]



Главные вопросы как все-таки реализовать считку файлов, в чем ошибка и как сверить отчеты

D

Пользователь

от Dizz , в категории: Java , год назад
2 ответа последнее сообщение 8 дней назад от lamar

Всех с прошедшими


Ребенку, потребовался сайт для школьного проекта. Я занимался программированием "цать" лет назад. Пришлось поднимать старые архивы покрытые пылью. Кое как смог вспомнить и написать сайт. Благо с дизайном сложностей нет. Однако возникла сложность с которой мне не удается разобраться. Пожалуйста, подсобите, если не сложно.

На сайте обязательно должен быть теск. В интернете, в общем доступе, нашел интересный вариант. Особенно понравился способ вывода результатов теста. Понравился и мне и ребенку. Но. Я уже второй день ломаю голову над одним нюансом - не могу сделать промежуток между вопросом и вариантами ответа и сами вопросы сделать выделенными. Уже мозг вспух.

Вот, собственно сам тест:


<div style="padding: 0px; margin:0.5cm;">

  

<script>

// Заголовок страницы (h2)

var subtitle = "Слова Л.Н. Толстого об образовании";

// Это ваши вопросы

var questions=[

{

text: " - Толстой говорил - Образование это не...:",

answers: ["«как стакан с водой для красок»",

 "«свеча в доме которая горит»",

 "«не заполненное ведро, а зажжение огня»"],

correctAnswer: 2 // нумерация ответов с нуля!

},

{

text: " - Толстой говорил - Образование это не...:",

answers: ["заполняет пустоты мозга",

 "то, что принимается, а то, что дается",

 "сила, которая не пригодится"],

correctAnswer: 1

},

{

text: " - Толстой говорил - Образование это...",

answers: ["развитие способности мыслить",

 "способ устроиться на работу",

 "получать мзду с дураков"],

correctAnswer: 0

},

{

text: "Образование – это не конечный результат:",

answers: ["а, средство обогащения",

 "а бесконечный процесс",

 "а, единовременное явление"],

correctAnswer: 1

}

];


var yourAns = new Array;

var score = 0;


function Engine(question, answer) {yourAns[question]=answer;}


function Score(){

  var answerText = "Результаты:\n";

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

var num = i+1;

answerText=answerText+"\n  Вопрос №"+ num +"";

if(yourAns[i]!=questions[i].correctAnswer){

answerText=answerText+"\n  Правильный ответ: " +

questions[i].answers[questions[i].correctAnswer] + "\n";

 }

else{

answerText=answerText+": Верно! \n";

++score;

}

  }


  answerText=answerText+"\nВсего правильных ответов: "+score+"\n";


  alert(answerText);

  yourAns = [];

  score = 0;

  clearForm("quiz");

}

function clearForm(name) {

  var f = document.forms[name];

  for(var i = 0; i < f.elements.length; ++i) {

if(f.elements[i].checked)

f.elements[i].checked = false;

}

}

</script>

<h3><script>document.write(subtitle)</script></h3>


<form name="quiz">

<script>

for(var q=0; q<questions.length; ++q) {

  var question = questions[q];

  var idx = 1 + q;


  document.writeln('<li><span class="quest">' + question.text + '</span><br>');

  for(var i in question.answers) {

document.writeln('<label><input type=radio name="q' + idx + '" value="' + i +

'" onClick="Engine(' + q + ', this.value)"> ' + question.answers[i] + '</label><br>');

}

document.writeln('</li>');


}

</script>


<center><input type="button" align="right" onClick="Score()" value="Проверить результаты"></center>

</form>

  

</div>

Пользователь

от 30dayint , в категории: Java , год назад
2 ответа последнее сообщение 9 дней назад от maya

я создал паблик который ничего не возвращает(void) с названием setLoaded, ещё такой же паблик но с названием getLoaded. Но при вводе "truck.getLoaded(true); truck.setLoaded();" truck если что это переменная которую я создал. Ну так вот, при вводе их в переменную мне пишут что нету такого метода и ошибка в обеих командах

Пользователь

от rossarko , в категории: Java , 3 месяца назад
2 ответа последнее сообщение 10 дней назад от catherine_wintheiser

На хекслете решаю очередную задачу и застрял немного. Сначала упал один тест, потом после рефакторинга упал совершенно другой тест. Уже запутался. По заданию я должен писать методом "черный ящик" , кажется так называется, или же TDD. Тест написал, потом написал класс с инициализацией перегруженных методов. Вроде всё так, но будто что-то упустил т.к все равно не прохожу проверку.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package io.hexlet;


import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.BeforeEach;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static io.hexlet.implementations.Methods.fill;


import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;


class MethodsTest {
    private List<String> coll = new ArrayList<>();
    private List<String> emptyColl = new ArrayList<>();


    @BeforeEach
    public void beforeEach() {
        coll.addAll(Arrays.asList("a", "b", "c", "d"));
    }
    @Test
    public void testFill() {
        fill(coll, "*", 1, 3);
        assertEquals(Arrays.asList("a", "*", "*", "d"), coll);
    }
    @Test
    public void testFill1() {
        fill(coll, "*");
        assertEquals(Arrays.asList("*", "*", "*", "*"), coll);
    }
    @Test
    public void testFill2() {
        fill(coll, "*", 4, 6);
        assertEquals(Arrays.asList("a", "b", "c", "d"), coll);
    }
    @Test
    public void testFill3() {
        fill(coll, "*", 0, 10);
        assertEquals(Arrays.asList("*", "*", "*", "*"), coll);
    }
    @Test
    public void testFill4() {
        fill(coll, "*", 2);
        assertEquals(Arrays.asList("a", "b", "*", "*"), coll);
    }
    @Test
    public void testFill5() {
        fill(coll, "*", -1, 4);
        assertEquals(Arrays.asList("*", "*", "*", "*"), coll);
    }
    @Test
    public void testFill6() {
        fill(emptyColl, "*");
        assertEquals(Arrays.asList(), emptyColl);
    }
    @Test
    public void testFill7() {
        fill(coll, "*", 5, 6);
        assertEquals(Arrays.asList("a", "b", "c", "d"), coll);
    }
}



 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
Failures (1):
  JUnit Jupiter:TestsTest:testRightImplementation()
    MethodSource [className = 'io.hexlet.TestsTest', methodName = 'testRightImplementation', methodParameterTypes = '']
    => org.opentest4j.AssertionFailedError: [The tests should have passed, but they failed] 
Expecting value to be true but was false
       java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62)
       java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502)
       io.hexlet.TestsTest.testRightImplementation(TestsTest.java:44)
       java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
       java.base/java.lang.reflect.Method.invoke(Method.java:580)
       org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:727)
       org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
       org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
       org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
       org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
       [...]

Пользователь

от bart , в категории: Java , 2 года назад
2 ответа последнее сообщение год назад от francis_schuster

Как вывести значение массива из класса в java?

Пользователь

от rachel , в категории: Java , 2 года назад
2 ответа последнее сообщение год назад от kennedi_pfeffer

Как покрыть тестами конструктор класса в java?

Пользователь

от gussie.jones , в категории: Java , 2 года назад
2 ответа последнее сообщение год назад от richard

Как в java подключить базу данных access 2003?

Пользователь

от catherine_wintheiser , в категории: Java , 2 года назад
2 ответа последнее сообщение год назад от shirley.vonrueden

Как реализованы перечисления в java?

Пользователь

от bart , в категории: Java , 2 года назад
2 ответа последнее сообщение год назад от marisa

Как работает comparator в java?

Пользователь

от charles.orn , в категории: Java , 2 года назад
2 ответа последнее сообщение год назад от chloe.keebler

Как отправить запрос авторизации на сервер используя java?

Java