Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Java] Наибольшая цифра трехзначного числа 
:(
    Опции темы
turtles
Дата 31.8.2011, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 17.2.2011

Репутация: нет
Всего: нет



Здравствуйте! Подскажите по коду не могу разобраться где не правильно, у меня иногда в программе не правильно показывает наибольшию цифру трехзначного числа

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

Код

public class Test {
   public static void main(String args []){
       final int min = 100;
        final int max = 999;
         int first;
         int second;
         int third;
          int value_max;
       int value = (int) (min + Math.random() * (max - min)) ;
       if(value > min && value < max) {
           first = (int) Math.floor(value / 100);
            second = (int) Math.floor((value - first * 100) / 10);
             third = (int) Math.floor(value - first * 100 - second * 10);
            System.out.println("Трехзначное число = "  + value);
               if(first > second){
                  value_max = first;
                    if(value_max < third){
                       value_max = third;
                 } else {value_max = second;}
 
          }else{ value_max = second;}
           if(value_max < third)
                       value_max = third;
            System.out.println("Первое число = "  + first);
            System.out.println("Второе число = "  + second);
            System.out.println("Третье число = "  + third);
            System.out.println("Максимальное число = "  + value_max);
 
             }
       }
}

И еще такой вопрос по какой формуле можно также вычислить наибольшию цифру четырех и пятизначного числа и т.д. 
PM MAIL   Вверх
LSD
Дата 31.8.2011, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
priam220
Дата 31.8.2011, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 4.6.2010

Репутация: нет
Всего: 8



преобразовать в char [] потом каждый символ в int. Сравнить. Кода будет заметно меньше и читаться будет.
Код

    public static void main(String[] args){
     char [] buf = new char [args[0].length()];
     String.valueOf(args[0]).getChars(0, args[0].length(), buf, 0);
     int minDigit = 0;
     for (char ch : buf){
      int x = Character.getNumericValue(ch);
      if (x > minDigit)
          minDigit = x; 
     }
     System.out.println(args[0]);
     System.out.println(minDigit);
    }


Это сообщение отредактировал(а) priam220 - 31.8.2011, 20:25
PM MAIL   Вверх
newbee
Дата 31.8.2011, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 24.8.2011

Репутация: 1
Всего: 19



Странно, что тему перенесли, вроде как человек сам делает и просто просит помочь, а не сделать за него.

Тех, кто предлагает перегонять чила в char[], я предлагаю убивать без суда.

turtles, извини, мне лень разбирать нагромождения ява-кода, но суть такова. Берешь число, делишь его на десять. Остаток от деления - последняя цифра числа. Далее берешь оставшуюся целую часть от деления, опять делишь на десять, берешь остаток - это следующая цифра и т.д. Так делаешь в цикле, пока твое число не станет нулем. По ходу этого действа можешь запоминать максимальную цифру.

Код

x = 123456          <- N-значное число
max = -1            <- значение максимальной цифры

while x > 0 {
  digit = x % 10    <- взятие остатка от деления, получаем цифру
  x = x / 10        <- целочисленное деление, модифицируем число
  if max < digit {  <- поиск максимальной цифры
    max=digit
  }
}



--------------------
You're face to face
With man who sold the world
PM   Вверх
priam220
Дата 31.8.2011, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 4.6.2010

Репутация: нет
Всего: 8



Цитата(newbee @  31.8.2011,  17:15 Найти цитируемый пост)
Тех, кто предлагает перегонять чила в char[], я предлагаю убивать без суда.

за что ж ты меня хочешь убить то???  smile 
PM MAIL   Вверх
newbee
Дата 31.8.2011, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 24.8.2011

Репутация: 1
Всего: 19



Цитата(priam220 @  31.8.2011,  18:27 Найти цитируемый пост)
за что ж ты меня хочешь убить то??? 
За быдлокод и глупость.


--------------------
You're face to face
With man who sold the world
PM   Вверх
Silent
Дата 31.8.2011, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 252
Регистрация: 3.10.2006

Репутация: 6
Всего: 9



Самый простой вариант, раз у тебя всегда только три цифры - просто их выдрать через / и % (хотя newbee тоже дело говорит). Да и выбор максимального не через такой огород делается. Код, не проверялся:
Код

public class Test {
   public static void main(String args [])
   {
       final int min = 100;
       final int max = 999;
       int value_max;
       int value = (int) (min + Math.random() * (max - min)) ;
       if(value > min && value < max) {
           int first  = value / 100;
           int second = value % 100 / 10;
           int third  = value % 10;
           System.out.println("Трехзначное число = "  + value);
           System.out.println("Первое число = "  + first);
           System.out.println("Второе число = "  + second);
           System.out.println("Третье число = "  + third);
           value_max = Math.max(first, Math.max(second, third));
           System.out.println("Максимальное число = "  + value_max);
       }
   }
}

PM MAIL   Вверх
priam220
Дата 31.8.2011, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 4.6.2010

Репутация: нет
Всего: 8



newbee,  судя по всему, ты великий кодер.)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0516 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.