2016-04-26 3 views
0

Я хочу изучить последовательность строк, вычислить среднюю длину строки и подсчитать, сколько строк превышает среднюю длину.Java - Строки и одномерные массивы

До сих пор в моем коде он только считывал ints, а строка также имела символы. Итак, как мне изменить код, чтобы он работал для строк, а не int. Я знаю, что первый шаг - вывести методы nextInt и изменить его для работы с строками, а также с другими переменными int в коде. Кто-нибудь может мне помочь?

// examine a sequence of strings 
// compute the average string length 
// count how many strings are above the average length 

import java.util.*; 

public class StringArrayTest { 
public static void main(String[] args) { 
    Scanner console = new Scanner(System.in); 
    System.out.println("What is the number of strings? "); 
    int numStrings = console.nextInt(); 
    String[] strings = new String[numStrings]; 

    // record strings to find average length 
    int sum = 0; 
    for (int i = 0; i < numStrings; i++) { 
     System.out.println("Number of strings from string " + (i + 1) + ": "); 
     String nextLine = console.next(); 
     strings[i] = nextLine; 
     sum += strings[i].length; 
    } 
    double average = (double) sum/numStrings; 

    // count strings above average length 
    int above = 0; 
     for (int i = 0; i < strings.length; i++) { 
      if (strings[i].length() > average) { 
       above++; 
      } 
     } 

     // report results 
     System.out.println(); 
     System.out.println("Average length of strings: " + average); 
     System.out.println(above + " strings above average length"); 
    } 

} 

ответ

0

Здесь публикуются только изменения. Остальная часть кода остается прежней.

    типа
  1. данных массива изменяется с INT в строку
  2. console.nextInt() изменен на console.next(), которая будет читать строку по возвращению
  3. Loop через массив строк и сравнить длину отдельных строк по отношению к средней длине строк.

Это все, что требуется.

String[] strings = new String[numStrings]; 
... 
for (int i = 0; i < numStrings; i++) { 
      System.out.println("Number of strings from string " + (i + 1) + ": "); 
      String nextLine = console.next(); 
      strings[i] = nextLine; 
      sum += strings[i].length(); 
     } 
... 
for (int i = 0; i < strings.length; i++) { 
      if (strings[i].length() > average) { 
       above++; 
      } 
     } 
+0

Отредактированный исходный код с изменениями, которые вы указали. Все еще не работает. Пожалуйста, ознакомьтесь с моими изменениями в коде выше –

+0

w00t !! Вы должны назначить строку, которую вы прочитали в массиве, а затем использовать ее. строки [i] = nextLine; кажется, отсутствует в вашем коде. – aksappy

+0

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

-1

можно изменить следующие изменения
console.nextInt() в console.nextLine()

sum += strings[i] в sum += strings[i].length

if (strings[i] > average) в if (strings[i].length > average)

+0

Это работает, если я использую метод next() вместо nextLine()? –

+0

@ m.daooo это сработает, если строки, которые вы используете, не содержат пробелов в них (т. Е. Пробелов, вкладок и т. Д.) – Maljam

+0

nextLine получит все до \ n (когда пользователь нажимает на ввод) – ZergRushJoe

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