2014-10-30 2 views
0

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

public class Program 
{ 
    public static void Main() 
    { 
     double[] input = new double[12]; 
     for (int i = 1; i <= 12; i++) 
     { 
      Console.Write(" Type in {0} number:", i); 
      input = [Convert.ToInt32(Console.ReadLine())]; 
     } 

     Console.WriteLine("The highest number is {0}", input.Max(element => Math.Abs(element))); 

     Console.ReadKey(); 
    } 
} 
+5

Вам не нужно хранить все введенные входы. Просто сохраните максимальное число, введенное до сих пор, и обновите его только в том случае, если пользователь вводит большее число. – artokai

+1

Я думаю, что это должен быть вход [i] – Vishal

+0

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

ответ

0

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

input[i] = Convert.ToDouble(Console.ReadLine()); 

, а затем изменить это, потому что arrray начинается с 0

for (int i = 0; i <= 11; i++) 
+0

Спасибо, это сработало. – aha364636

+0

Проблемные массивы не сбивают с толку при первом запуске. –

0

Как @Ashad Shanto сказал, что вы должны использовать Convert.ToDouble и вы должны использовать input[i] вместо input. Так что ваш код должен выглядеть следующим образом:

public class Program 
{ 
    public static void Main() 
    { 
     double[] input = new double[12]; 
     for (int i = 0; i < 12; i++) 
     { 
      Console.Write(" Type in {0} number:", i); 
      input[i] = [Convert.ToDouble(Console.ReadLine())]; 
     } 

     Console.WriteLine("The highest number is {0}", input.Max(element => Math.Abs(element))); 

     Console.ReadKey(); 
    } 
} 
+0

Нет необходимости конвертировать в double вместо int, если только не целочисленный ввод не ожидается. Конечно, в этом случае также нет необходимости в том, чтобы массив был 'double []' вместо 'int []', поэтому кто действительно знает, что на самом деле нужен OP. :) –

0

Как указано в @artokai, вам не нужно хранить все введенные числа.

Попробуйте следующее:

double heighest = Double.MinValue; 
    for (int i = 0; i < 12; i++) 
    { 
     Console.Write(" Type in {0} number:", i); 
     double input = (Convert.ToDouble(Console.ReadLine()); 
     if (input > heighest) 
      heighest = input 

    } 
    Console.WriteLine("The highest number is {0}", highest); 
+1

Вышеизложенное не предполагает отрицательных входов. Кроме того, квадратная скобка перед 'Convert' не принадлежит. –

+0

Вышеупомянутое также предполагает, что пользователь вводит только двойное значение. –

0

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

public static void Main() 
{ 
    var currentNumber = 0; 
    for (var i = 1; i <= 12; i++) 
    { 
     Console.Write(" Type in {0} number: ", i); 

     var number = Console.ReadLine(); 
     int result; 

     if (int.TryParse(number, out result)) 
     { 
      if (currentNumber < result) 
      { 
       currentNumber = result; 
      } 
     } 
    } 

    Console.WriteLine("The highest number is {0}", currentNumber); 
    Console.ReadKey(); 
} 
Смежные вопросы