Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 20.09.2023
Сообщений: 8

Перевод из Python в Java

20.09.2023, 20:27. Показов 1694. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот код на Python, который нужно перевести на Java:
Python
1
2
3
4
5
6
7
8
for n in range(1, 1000):
s = bin(n)[2:]
if n%3==0:
s += s[-3:]
else:
s +=bin(n%3*3)[2:]
if int(s, 2)>151:
print(int(s, 2))
Заранее Большое спасибо!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.09.2023, 20:27
Ответы с готовыми решениями:

Перевод из python в java
Я пишу проект на тему сравнение языков программирования: java, python и c#. Учитель сказал сделать на каждом программу, и так как...

Перевод кода с Python на Java
Столкнулся с тем, что нужно перевести этот код с Python на Java for i in range (1, 8): print (i * ".") print...

Перевод кода (Python -> Java)
Переведите, пожалуйста, код с питона на яву: kolv = int(input()) pochtadr = for i in pochtadr: i = i.replace('.', '') if...

17
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
21.09.2023, 13:35
Исключительно убогий код. И оформлен неправильно
0
0 / 0 / 0
Регистрация: 20.09.2023
Сообщений: 8
21.09.2023, 19:45  [ТС]
Оформлено всё правильно. Возможно ли это как-то на JAVA написать?
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
21.09.2023, 19:53
Цитата Сообщение от Artemks Посмотреть сообщение
Оформлено всё правильно.
Попробуй запустить для начала.
Цитата Сообщение от Artemks Посмотреть сообщение
Возможно ли это как-то на JAVA написать?
Никак.
0
0 / 0 / 0
Регистрация: 20.09.2023
Сообщений: 8
22.09.2023, 08:49  [ТС]
Я запустил, вывелось двоичное число, которое кратно трём и умножилось на 3
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
22.09.2023, 08:52
Artemks, ты в курсе, что в питоне отступы не просто для красоты сделаны?
0
0 / 0 / 0
Регистрация: 20.09.2023
Сообщений: 8
22.09.2023, 19:32  [ТС]
Python
1
2
3
4
5
6
7
8
for n in range(1,1000):
     s = bin(n)[2:]
     if n%3==0:
         s+= s[-3:]
     else:
           s += bin(n%3*3)[2:]
     if int(s, 2)>151:
         print(int(s, 2))
А теперь?
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
22.09.2023, 19:54
Цитата Сообщение от Artemks Посмотреть сообщение
А теперь?
Лучше выложи изначальный текст задания.
0
0 / 0 / 0
Регистрация: 20.09.2023
Сообщений: 8
22.09.2023, 21:48  [ТС]
Вот:
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом. 1. Строится двоичная запись числа N. 2. Далее эта запись обрабатывается по следующему правилу: а) если число N делится на 3, то к этой записи дописываются три последние двоичные цифры; б) если число N на 3 не делится, то остаток от деления умножается на 3, переводится в двоичную запись и дописывается в конец числа. Полученная таким образом запись является двоичной записью искомого числа R. 3. Результат переводится в десятичную систему и выводится на экран. Например, для исходного числа 12 = 11002 результатом является число 11001002 = 100, а для исходного числа 4 = 1002 это число 100112 = 19. Укажите минимальное число R, большее 151, которое может быть получено с помощью описанного алгоритма. В ответе запишите это число в десятичной системе счисления.
0
0 / 0 / 0
Регистрация: 20.09.2023
Сообщений: 8
25.09.2023, 11:24  [ТС]
Это можно как-то в JAVA перевести или нет?
0
22 / 14 / 8
Регистрация: 30.03.2020
Сообщений: 86
25.09.2023, 11:54
Цитата Сообщение от Artemks Посмотреть сообщение
Это можно как-то в JAVA перевести или нет?
lol конечно нельзя, именно поэтому этот код написан на питоне а не на джаве
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
25.09.2023, 13:16
Можно разумеется
0
 Аватар для vvm28
771 / 538 / 67
Регистрация: 22.12.2013
Сообщений: 2,497
Записей в блоге: 26
25.09.2023, 17:43
Цитата Сообщение от Artemks Посмотреть сообщение
А теперь?
Вот пример перевода

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class Main {
    public static void main(String[] args) {
        for (int n = 1; n < 1000; n++) {
            String s = Integer.toBinaryString(n);
            s = s.substring(2);
 
            if (n % 3 == 0) {
                s += s.substring(Math.max(0, s.length() - 3));
            } else {
                int temp = n * 3 % 3;
                String tempS = Integer.toString(temp * 3);
                tempS = String.format("%032s", Integer.valueOf(tempS, 2));
                s += tempS.substring(tempS.length() - 2);
            }
 
            if (Integer.parseInt(s, 2) > 151) {
                System.out.println(Integer.parseInt(s, 2));
            }
        }
    }
}
Обратите внимание, что в Java, в отличие от Python, строки неизменяемы, поэтому для изменения строк используются методы типа substring() и replace(). Также для форматирования строк используется класс String.

Также в Java нет встроенной поддержки бинарных чисел, поэтому для перевода числа в двоичное представление и обратно используется метод Integer.toBinaryString() и его аналоги.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
25.09.2023, 17:46
Цитата Сообщение от vvm28
в Java, в отличие от Python, строки неизменяемы
В питоне тоже, есличо
0
2487 / 1151 / 709
Регистрация: 25.04.2016
Сообщений: 3,315
25.09.2023, 19:24
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/usr/bin/env python3
# coding: utf-8
 
 
def get_binary(num):
    return bin(num)[2:]
 
 
def get_result(num):
    n = num % 3
    binary = get_binary(num)    # двоичная запись числа
    # получаем двоичную запись числа R:
    s = binary + binary[-3:] if n == 0 else binary + get_binary(n * 3)
    return int(s, 2)            # десятичное значение R
 
 
n, r = 1, 0
while (True):
    r = get_result(n)
    if r > 151:
        break
    n += 1
 
print(f"n = {n}\tr = {r}")
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class MyProg {
    private static String getSubstring(String s) {
        return (s.length() > 2)? s.substring(s.length() - 3) : s.substring(0);
    }
 
    private static String toBinary(int n) {
        return Integer.toBinaryString(n);
    }
 
    private static int getResult(int n) {
        int d = n % 3;
        String b = toBinary(n);         // двоичная запись числа
        /* получаем двоичную запись числа R: */
        String s = (d == 0)? b + getSubstring(b) : b + toBinary(d * 3);
        return Integer.parseInt(s, 2);  // десятичное значение R
    }
 
    public static void main(String[] args) {
        int n = 0, r = 0;
        while ((r = getResult(++n)) <= 151) ;
        System.out.printf("n = %d\tr = %d%n", n, r);
    }
}
0
0 / 0 / 0
Регистрация: 20.09.2023
Сообщений: 8
26.09.2023, 16:40  [ТС]
vvm28, не запускается, выдает вот такое сообщение: Exception in thread "main" java.lang.StringIndexOutOfBoundsExceptio n: String index out of range: -1
at java.base/java.lang.String.substring(String.java:1 841)
at Main.main(Main.java:14)
0
2487 / 1151 / 709
Регистрация: 25.04.2016
Сообщений: 3,315
27.09.2023, 03:51
Лучший ответ Сообщение было отмечено Artemks как решение

Решение

Artemks, Math.max возвращает максимальное значение из переданных ему аргументов. Поскольку в примере ему передается 0 и s.length() - 3, то он должен вернуть наибольшее из них.

Ваша ошибка говорит о том, что результатом вызова Math.max стала -1, чего не может быть, поскольку одним из аргументов передается 0 (0 строго больше -1). Так что тут либо косяк ява машины, либо магнитная буря на Фобосе, поскольку код должен корректно отрабатывать в 100% случаях.

пример теста:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class MyProg {
    private static String toBinary(int n) {
        return Integer.toBinaryString(n);
    }
 
    private static String getSubstring(String s) {
        return s.substring(Math.max(0, s.length() - 3));
    }
 
    private static void displayValues(int n) {
        String binary = toBinary(n);
        String last3s = getSubstring(binary);
        System.out.printf("%3d |  %4s  | %-4s%n", n, binary, last3s);
    }
 
    public static void main(String[] args) {
        System.out.println("int | binary | last 3");
        for (int i = 0; i < 16; i++)
            displayValues(i);
    }
}
результат запуска:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int | binary | last 3
  0 |     0  | 0   
  1 |     1  | 1   
  2 |    10  | 10  
  3 |    11  | 11  
  4 |   100  | 100 
  5 |   101  | 101 
  6 |   110  | 110 
  7 |   111  | 111 
  8 |  1000  | 000 
  9 |  1001  | 001 
 10 |  1010  | 010 
 11 |  1011  | 011 
 12 |  1100  | 100 
 13 |  1101  | 101 
 14 |  1110  | 110 
 15 |  1111  | 111
0
0 / 0 / 0
Регистрация: 20.09.2023
Сообщений: 8
02.10.2023, 19:05  [ТС]
Благодарю!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.10.2023, 19:05
Помогаю со студенческими работами здесь

Перевод кода из Python в Java
Есть формула написанная на питоне. Не знаю, как перевести на джаву. Помогите import math x = int(math.pi / 9) a = int(1.5) b...

Перевод кода из Java в Python
Доброго времени суток! Получилась казусная ситуация с преподавателем. Был написан код на Java для получения зачета по предмету, но...

Перевод кода из Pascal в Python - Python
Имеется код программы на языке Pascal, требуется перевести его в Python. Я не могу перевести его в Python Код program pryam1; ...

Аналог MoveNext на Java. Перевод программы с C# на Java
Написала программу на C#. Перевожу ее на Java. Проблема возникла в переводе нижеследующего куска программы. В связи с крайне слабым знанием...

Перевод кода с Pascal на Java - Java SE
var a:Int64; begin Reset(Input,'input.txt'); Rewrite(Output,'output.txt'); read(a); Write(a,9,9-a) end. Заранее...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru