Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
hoocie
0 / 0 / 0
Регистрация: 08.12.2009
Сообщений: 29
#1

Преобразовать элемент в числе без цикла и без рекурсии - Java SE

18.10.2012, 10:10. Просмотров 1167. Ответов 19
Метки нет (Все метки)

Доброго времени суток.
Вопрос такой, как преобразовать элемент в целом числе, а именно самый правый 0 в 1, не используя циклы и рекурсию.
Буду рад всем идеям.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.10.2012, 10:10
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Преобразовать элемент в числе без цикла и без рекурсии (Java SE):

Array: Как без цикла узнать содержится ли в массиве элемент?
Как без цикла узнать содержиться ли в массиве эллемент???

Быстрая сортировка без рекурсии
КАК решить быструю сортировку без рекурсии на языке java, очень очень...

Stack Overflow без рекурсии
Предложили такую задачку. Надо написать программу, которая кидает SO,...

Вызвать переполнение стека без рекурсии
Как вызвать переполнение стека без рекурсии? Вариант throw new...

Вычисление факториалов больших чисел, без рекурсии
public static void main(String args) { BigInteger bi1, bi2, bi3; ...

Как обойти дерево файловой системы БЕЗ рекурсии
Подскажите как обойти дерево файловой системы на заданную глубину БЕЗ рекурсии,...

19
mutagen
2564 / 2237 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
18.10.2012, 11:00 #2
Java
1
2
int a = 10; 
a+=1;
не?
0
hoocie
0 / 0 / 0
Регистрация: 08.12.2009
Сообщений: 29
18.10.2012, 11:13  [ТС] #3
Цитата Сообщение от mutagen Посмотреть сообщение
Java
1
2
int a = 10; 
a+=1;
не?
не

Java
1
2
int a = 101
a+=1
а=10 это только частный случай
0
turbanoff
Эксперт Java
4008 / 3743 / 739
Регистрация: 18.05.2010
Сообщений: 9,323
Записей в блоге: 11
Завершенные тесты: 1
18.10.2012, 11:39 #4
Цитата Сообщение от hoocie Посмотреть сообщение
Вопрос такой, как преобразовать элемент в целом числе, а именно самый правый 0 в 1, не используя циклы и рекурсию.
А если не 0, то что? Задание не полное.
0
hoocie
0 / 0 / 0
Регистрация: 08.12.2009
Сообщений: 29
18.10.2012, 12:04  [ТС] #5
Цитата Сообщение от turbanoff Посмотреть сообщение
А если не 0, то что? Задание не полное.
вся информация, которая была в задании,вся изложена. больше ничего не говориться а что если... и тд.
требуется алгоритм,а какой - в этом все дело

Добавлено через 15 минут
задание ведь на сообразительность)

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
import java.util.Scanner;
 
public class Hel
{    
    public static void run(){
        try{
            int m = 3060, n = 4080, a, result;
            
            result = (int) (Math.floor( Math.random() * (n - m + 1) ) + m);
            
            System.out.println("Number: " + result);
            
            Scanner in = new Scanner(System.in);
            
            System.out.print("0-->1: ");
            
            n = in.nextInt();
            
            a = n + result;
            
            System.out.println("Result: " + a);
            
            in.close();
        }
        catch (Exception e){
            System.err.println(e.getMessage());
        }
    }
    public static void main(String[] args) {
        run();
    }
}
0
hoocie
0 / 0 / 0
Регистрация: 08.12.2009
Сообщений: 29
18.10.2012, 13:24  [ТС] #6
может у кого есть еще какие небудь идеи
0
mutagen
2564 / 2237 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
18.10.2012, 13:45 #7
дето так
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.Random;
 
public class ToZero {
    public static void main(String[] args) {
        Random random = new Random();
        for (int i = 0; i < 100; i++) {
            int r = random.nextInt(100);
            System.out.println(r + " " + getValue(r));
        }
    }
 
    static int getValue(int i) {
        char[] c = Integer.valueOf(i).toString().toCharArray();
        if (c[c.length - 1] == '0')
            c[c.length - 1] = '1';
        return Integer.parseInt(String.valueOf(c));
    }
}
0
RequiemMass
91 / 91 / 18
Регистрация: 06.01.2012
Сообщений: 394
18.10.2012, 13:56 #8
Java
1
2
3
4
5
6
7
int k = 1342420;
        
        StringBuilder bld=new StringBuilder(Integer.toString(k));
        char chLast=bld.charAt(bld.length()-1);
        if (chLast==0) bld.setCharAt(bld.length()-1, '1');
        k=Integer.parseInt(bld.toString());
        System.out.print(k);
0
hoocie
0 / 0 / 0
Регистрация: 08.12.2009
Сообщений: 29
18.10.2012, 14:01  [ТС] #9
"...не используй циклы и рекурсию..."
0
mutagen
2564 / 2237 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
18.10.2012, 14:12 #10
Цитата Сообщение от RequiemMass Посмотреть сообщение
if (chLast==0) bld.setCharAt(bld.length()-1, '1');
вот тут у вас будет отличный сигфолт )))

Добавлено через 11 минут
Цитата Сообщение от hoocie Посмотреть сообщение
"...не используй циклы и рекурсию..."
и где у меня циклы???

Java
1
2
3
4
5
6
static int getValue(int i) {
        char[] c = Integer.valueOf(i).toString().toCharArray();
        if (c[c.length - 1] == '0')
            c[c.length - 1] = '1';
        return Integer.parseInt(String.valueOf(c));
    }
0
exiqa
486 / 332 / 71
Регистрация: 24.12.2011
Сообщений: 591
18.10.2012, 14:20 #11
hoocie, а вы уверены, что правильно поняли задание? Просто это довольно популярная задача, но про число в двоичном виде.
0
hoocie
0 / 0 / 0
Регистрация: 08.12.2009
Сообщений: 29
18.10.2012, 14:38  [ТС] #12
Цитата Сообщение от exiqa Посмотреть сообщение
hoocie, а вы уверены, что правильно поняли задание? Просто это довольно популярная задача, но про число в двоичном виде.
уверен. я тоже догадывался про двоичный вид, видимо на это и расчитывали когда дали задание
0
RequiemMass
91 / 91 / 18
Регистрация: 06.01.2012
Сообщений: 394
18.10.2012, 18:39 #13
mutagen, можно по подробнее?
0
mutagen
2564 / 2237 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
18.10.2012, 22:35 #14
Цитата Сообщение от RequiemMass Посмотреть сообщение
mutagen, можно по подробнее?
сравнение char с int
1
lowercase
212 / 201 / 85
Регистрация: 09.05.2012
Сообщений: 494
21.10.2012, 13:00 #15
Java
1
2
3
4
5
6
7
8
9
10
switch(x % 10) {
    case 0: return x + 1;
    case 1: return x - 1;
    default: return x;
}
// для битов:
switch(x & 0x1) {
    case 0: return x | 0x1;
    case 1: return x & 0xfffffffe;
}
не?
0
SpamBot
13 / 13 / 4
Регистрация: 04.10.2012
Сообщений: 29
21.10.2012, 18:20 #16
Как я понимаю, возможны варианты типа
40567 -> 41567
401230567 -> 401231567
Поэтому в варианте mutagen надо найти последнее вхождение lastIndexOf('0') в строку, а затем заменить его на '1'.

Добавлено через 10 минут
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.util.*;
 
public class Last
{
        public static void main(String[] args)throws Exception
        {
                Scanner sc = new Scanner(System.in);
                int val  = sc.nextInt();
                System.out.println(getValue(val));
 
        }
 
        static int getValue(int i) {
                String str = Integer.valueOf(i).toString();
                int index = str.lastIndexOf('0');
                char[] c = str.toCharArray();
                c[index] = '1';
                return Integer.parseInt(String.valueOf(c));
        }
}
0
RequiemMass
91 / 91 / 18
Регистрация: 06.01.2012
Сообщений: 394
21.10.2012, 23:08 #17
mutagen, чем оправдано использование valueOf в строке
Java
1
char[] c = Integer.valueOf(i).toString().toCharArray();?
Добавлено через 31 минуту
Ну или даже по другому спрошу, критично ли, что вы используете класс обёртку?
0
mutagen
2564 / 2237 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
22.10.2012, 01:17 #18
Цитата Сообщение от RequiemMass Посмотреть сообщение
критично ли, что вы используете класс обёртку?
я не понимаю вопроса, что за смысл Вы вкладываете в "критично" и для чего нужно оправдание Integer.valueOf(i)?
0
RequiemMass
91 / 91 / 18
Регистрация: 06.01.2012
Сообщений: 394
22.10.2012, 13:10 #19
mutagen, Я всё это к тому, что можно просто вот так написать.
Java
1
Integer.toString(k).toCharArray();
0
mutagen
2564 / 2237 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
22.10.2012, 21:01 #20
ваш вариант популирует новый String объект, а мой кеширован, хотя в итоге всё равно вызывается ваш.
Это привычка просто пользоваться экономными к памяти вариантами и в данном конкретном случае она ничего не даёт.
Но вот если бы этих интежеров было много и они нужны были бы как интежеры а не как строка, вот тогда бы стало заметно на моём варианте

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static Integer valueOf(int i) {
        assert IntegerCache.high >= 127;
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }
 
 public static String toString(int i) {
        if (i == Integer.MIN_VALUE)
            return "-2147483648";
        int size = (i < 0) ? stringSize(-i) + 1 : stringSize(i);
        char[] buf = new char[size];
        getChars(i, size, buf);
        return new String(buf, true);
    }
2
22.10.2012, 21:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.10.2012, 21:01
Привет! Вот еще темы с решениями:

Как без цикла объявить?
ArrayList mat = new ArrayList; //как не делать этот цикл? for(int...

Работа с массивом без цикла
Есть массив из N элементов. Возможно ли без цикла узнать, есть ли в массиве...

Прервать выполнение конструкции без выхода из метода\цикла
Добрый день. Не могу понять как сделать следующее... int x = 0; while (x...

Преобразовать строку в число (без методов конвертации)
Задача заключается в следующем, нужно получить от юзера (или не от юзера)...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru