2014-02-14 7 views
0

Я пытаюсь написать программу, которая неоднократно просит пользователя предоставить баллы (из 10) на test.It необходимо продолжить, пока не будет предоставлено отрицательное значение. Значения выше 10 должны игнорироваться. Я также вычислил среднее значение входных данных. После ввода баллов мне нужно использовать один массив для создания таблицы, которая автоматически заполняет тестовые баллы и количество вхождений определенной тестовой оценки.Массивы с пользовательским вводом

Я хотел, чтобы это выглядело примерно так:

Score | # of Occurrences 

    0 3  
    1 2 
    2 4 
    3 5 
    4 6 

и так далее .. P

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

import java.io.*; 
import java.util.*; 

public class Tester1 
{ 
public static void main() 
{ 
    Scanner kbReader= new Scanner (System.in); 

    int score[] = new int [10];//idk what im doing with these two arrays 
    int numofOcc []= new int [10]; 

    int counter=0; 
    int sum=0; 

    for (int i=0;i<10;i++)// Instead of i<10... how would i make it so that it continues until a negative value is entered. 
    { 
     System.out.println("Enter score out of 10"); 
     int input=kbReader.nextInt(); 

     if (input>10) 
     { 
      System.out.println("Score must be out of 10"); 

     } 
     else if (input<0) 
     { 
      System.out.println("Score must be out of 10"); 
      break; 
     } 
     else 
     { 
      counter++; 
      sum+=input; 

     } 
    } 
    System.out.println("The mean score is " +(sum/counter)); 

    } 
} 
+0

Для беспокойства «космос» вы можете использовать 'String.format («% s% 5s », string1, string2)'. Это создало бы до 5 пробелов для вашей вкладки – user2573153

+0

В какую часть вы застряли? –

+0

Если это ваш первый вопрос, здесь мой первый совет: обязательно задайте конкретный вопрос о проблеме, с которой вы сталкиваетесь. – csmckelvey

ответ

0

Вы можете использовать do...while цикл вроде этого:

import java.io.*; 
import java.util.*; 

public class Tester1 
{ 
    public static void main(String args[]) { 
     Scanner kbReader= new Scanner (System.in); 

     int scores[] = new int [10]; 

     int counter = 0; 
     int sum = 0;  
     int input = 0; 

     do { 
      System.out.println("Enter score out of 10 or negative to break."); 
      input=kbReader.nextInt(); 

      if (input<0) { 
       break; 
      } else if (input>10) { 
       System.out.println("Score must be out of 10"); 
      } else { 
       scores[input]++; 
       counter++; 
       sum+=input; 
      } 
     } while (input>0); 

     System.out.println("Score\t# of occur..."); 
     for(int i =0; i<10; i++) { 
      System.out.println(i + "\t" + scores[i]); 
     }; 

     System.out.println("The mean score is " +(sum/counter)); 
    } 
} 

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

+0

Красиво сделано! Я вижу, как цикл while работает лучше, чем цикл for для этого вопроса. Могу ли я каким-то образом использовать цикл for в этой ситуации? – sm15

+0

@ sm15 вы можете использовать цикл for без указания параметров для начала; end: increment следующим образом: 'for (;;)', и это будет то же самое, что и цикл while (true). В обоих случаях вам придется выйти из цикла, используя инструкцию 'break;' внутри цикла. – jpw

+0

ОК, я вижу. havent узнал, что много lol, но спасибо! – sm15

0

Я думаю, что вам нужен массив типов! Create ArrayList from array

Думайте об этом как о динамическом массиве, вам не нужно указывать размер массива, и он автоматически расширяется/уменьшается.

0

Что вам не хватает, это цикл while. Вот хороший способ прокрутки сканера для ввода. Он также улавливает число больше, чем 10, и обеспечивает сообщение об ошибке:

public static void main() { 
    Scanner s = new Scanner(System.in); 
    ArrayList<Integer> list = new ArrayList<Integer>(); 
    int response = 0; 
    while (response >= 0) { 
     System.out.print("Enter score out of 10: "); 
     response = s.nextInt(); 
     if (response > 10) { 
      System.out.println("Score must be out of 10."); 
     } else if (response >= 0) { 
      list.add(response); 
     } 
    } 
    // Do something with list 
} 
Смежные вопросы