2013-12-22 4 views
-4

говорят, что у меня есть пара чисел в строке: Строка line = "564 33 654 8321 15"; И теперь вы можете найти наибольшее число внутри этой строки. лаборатория дает мне помощь алгоритм метода getLargest():Как вернуть наибольшее число в строке java

largest = really small number; 
while(there are more number to check) 

{num= get current number 
if(num > largest) 
largest=num 
} 

кто-то может помочь мне понять, как сделать этот метод «getLargest»?

+0

Можете ли вы показать нам, что вы уже пробовали, и почему он не работает, а не просто псевдокод –

+0

Я согласен с peeskillet здесь. У вас уже есть псевдокод (это очень хороший старт). Если вы на самом деле не ввели его в код, запустите один шаг за раз, например, просто извлеките номера из строки для начала. Возможность разбить программу на небольшие, управляемые части - очень важный навык, поэтому многие из нас не размещают решения; это лишит вас важного опыта. –

+0

Я просто хочу знать, как получить доступ к каждому номеру в строке? –

ответ

3

Подсказки:

  • Split струна на части; например прочитайте Javadocs за String.split(...).

  • Преобразование строк в целые числа; например прочитайте Javadocs за Integer.parseInt(...).

  • Остальное - это петля и простая логика.

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

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

+0

Вы можете использовать StringTokenizer вместо String.split – MultiplyByZer0

+1

@MistressDavid Как отмечено в javadoc для' StringTokenizer', использование '.split()' является предпочтительным методом и использование 'StringTokenizer' в новом коде не рекомендуется. Это наследие. –

1

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

public static void main(String[] args) { 

    //The line is a String, and the numbers must be parsed to integers 
    String line = "564 33 654 8321 15"; 

    //We split the line at each space, so we can separate each number 
    String[] array = line.split("\\s+"); 

    //Integer.MIN_VALUE will give you the smallest number an integer can have, 
    //and you can use this to check against. 
    int largestInt = Integer.MIN_VALUE; 

    //We iterate over each of the separated numbers (they are still Strings) 
    for (String numberAsString : array) { 

     //Integer.parseInt will parse a number to integer from a String 
     //You will get a NumberFormatException if the String can not be parsed 
     int number = Integer.parseInt(numberAsString); 

     //Check if the parsed number is greater than the largestInt variable 
     //If it is, set the largestInt variable to the number parsed 
     if (number > largestInt) { 
      largestInt = number; 
     } 
    } 

    //We are done with the loop, and can now print out the largest number. 
    System.out.println(largestInt); 
} 
+1

1) Пожалуйста, не поощряйте студентов лениться. 2) Даже если OP не копирует ваше решение, ему/ей не нужно было проходить процесс обучения, чтобы посмотреть на javadocs и решить это решение для себя. –

+0

Нужно отметить, что вы хорошо знаете. Мой первый пост :) – fictive

Смежные вопросы