2014-11-16 5 views
0

Попытка позволить пользователям ввести число целых чисел, чтобы я мог установить длину массива, а затем найти максимальное и минимальное значение. Однако я не могу найти max и min. Пожалуйста помоги.Найти номер наибольшего и наименьшего чисел с помощью массивов

import java.util.Scanner; 
import java.util.Arrays; 
public class ExerciseC{ 
    public static void main(String[] args){ 
     Scanner keyboard = new Scanner(System.in); 
     System.out.println("Enter the number of integers you would like to enter:"); 
     int numberEnter = keyboard.nextInt(); 
     System.out.println("Enter some integers:"); 
     int integers = keyboard.nextInt(); 
     int numbers [] = new int [numberEnter]; 
     int maxValue = numbers[0]; 
     int minValue = numbers[0]; 
     int max = 0; 
     int min = 0; 
     for (int index = 1; index < numbers.length; index ++) { 
      if (numbers[index] > maxValue) { 
       maxValue = numbers [index]; 
      } 
     } 
     System.out.println("Print: " + maxValue); 
     System.out.println("The difference between the largest and the smallest is: "); 
    } 

} 
+2

Где вы принимать пользовательский ввод для элементов массива? –

+0

Извините, я новичок в Java, поэтому я не знаю, что я делаю. – jackyjacky524

+0

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

ответ

1

Вам не кажется, что ввод более одного значения (и вы никогда не храните integers в массиве). Кроме того, вы не устанавливаете мин. Я думаю, что вы хотели

public static void main(String[] args) { 
    Scanner keyboard = new Scanner(System.in); 
    System.out.println("Number of integers to enter:"); 
    int numberEnter = keyboard.nextInt(); 
    int numbers[] = new int[numberEnter]; 
    int pos = 0; 
    do { 
     System.out.printf("Please enter integer #%d/%d:%n", pos, numberEnter); 
     numbers[pos++] = keyboard.nextInt(); 
    } while (pos < numberEnter && keyboard.hasNextInt()); 
    int min = numbers[0]; 
    int max = numbers[0]; 
    for (pos = 1; pos < numbers.length; pos++) { 
     if (numbers[pos] < min) { // <-- test min. 
      min = numbers[pos]; 
     } 
     if (numbers[pos] > max) { // <-- test max. 
      max = numbers[pos]; 
     } 
    } 
    // Display everything. 
    System.out.printf("%s Min: %d Max: %d%n", Arrays.toString(numbers), 
      min, max); 
} 
+0

Спасибо !!! Можете ли вы объяснить, что делают функции% s,% d и% n? Могу ли я просто назначить любую переменную после%, а затем просто после запятой? – jackyjacky524

+0

@ jackyjacky524 Вы можете прочитать о синтаксисе [Формат строки] (https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#syntax) в ['Formatter'] (https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html) Javadoc. '% S' является' String', '% d' является десятичным целым числом, а'% n' - новой строкой. Аргументы приводятся после 'String'. –

+0

Хорошо, спасибо, много человек. Я действительно не знаю, как начать изучать Java, потому что это такой огромный язык. Очень ценю вас. – jackyjacky524

1

Ваш numbers[] пуст. Вход пользователя не сохраняется в массиве.

Вот ваш фиксированный код:

package com.company; 

import java.util.Scanner; 

public class ExerciseC{ 
    public static void main(String[] args){ 
     Scanner keyboard = new Scanner(System.in); 
     System.out.println("Enter the number of integers you would like to enter:"); 
     int numberEnter = keyboard.nextInt(); 
     int numbers [] = new int [numberEnter]; 
     for (int i = 0; i < numberEnter; i++) { 
      System.out.println("Enter integer:"); 
      numbers[i] = keyboard.nextInt(); 
     } 
     int maxValue = numbers[0]; 
     int minValue = numbers[0]; 
     for (int index = 1; index < numbers.length; index ++) { 
      if (numbers[index] > maxValue) { 
       maxValue = numbers [index]; 
      } 
     } 
     System.out.println("Print: " + maxValue); 
     System.out.println("The difference between the largest and the smallest is: "); 
    } 

} 
+0

Спасибо, человек: D – jackyjacky524

0
import java.util.Scanner; 
    class StdR { 
public static void main(String[] args) { 
     // TODO Auto-generated method stub 

     StdR st = new StdR(); 
     st.stdR(); 
     //System.out.println(st.stdR(); 
    } 
     void stdR() 
     { 
      char[] grade = {'A','B','C','D','E','F'}; 
      Scanner input = new Scanner(System.in); 
      byte[] st = new byte[3]; 
      double[] percentage = new double[st.length]; 

      for(byte s = 0; s < st.length; s++){ 
       System.out.println("\nStudent " + s); 
       short noOfMarks = 0; 
       short totalMarks = 450; 
       percentage[s] = 0.0; 
       byte[] marks = new byte[5]; 

       for (byte i = 0; i < marks.length; i++){ 

        System.out.println("Enter marks of Chapter "+ i + ": "); 
        marks[i] = input.nextByte(); 

        noOfMarks += marks[i]; 
        percentage[s] += (marks[i] * 100)/totalMarks; 
       } 

       System.out.print("No of marks: " + noOfMarks + "\t"); 
       System.out.print("Percentage: " + percentage[s] + "\t"); 
       if (percentage[s] > 79.0 && percentage[s] < 100.1) 
        System.out.print("Grade: " + grade[0]); 
       else if (percentage[s] > 69.0 && percentage[s] < 80.0) 
        System.out.print("Grade: " + grade[1]); 
       else if (percentage[s] > 59.0 && percentage[s] < 70.0) 
        System.out.print("Grade: " + grade[2]); 
       else if (percentage[s] > 49.0 && percentage[s] < 60.0) 
        System.out.print("Grade: " + grade[3]); 
       else if (percentage[s] > 39.0 && percentage[s] < 50.0) 
        System.out.print("Grade: " + grade[4]); 
       else if (percentage[s] < 40.0) 
        System.out.print("Grade: " + grade[5]); 
      } 
      double smallest = percentage[0] , largest= percentage[0]; 

      for (int i=0 ;i< percentage.length; i++) { 
       if (percentage[i] < smallest) { 
        smallest = percentage[i]; 
       } // end finding smallest 
       if (percentage[i] > largest) { 
        largest = percentage[i]; 
       } 

      } 
      System.out.println("\n1st Position and Top percentage is " + largest); 
      System.out.println("\nLast Position and Least percentage is "+smallest); 
     } 
    } 
+1

Кодовые ответы недопустимы, потому что они не помогают другим понять их проблемы - вместо этого они предоставляют решение без контекста, чтобы объяснить, как они туда попали. Если возникнет аналогичный вопрос, ваш ответ, вероятно, будет бесполезным, тогда как если бы вы объяснили свою методологию, ваш ответ был бы гораздо более полезным. –

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