2016-04-26 8 views
0

Ich möchte eine Sequenz von Strings untersuchen, die durchschnittliche Stringlänge berechnen und zählen, wie viele Strings über der durchschnittlichen Länge liegen.Java - Strings und eindimensionale Arrays

Bis jetzt, in meinem Code, liest es nur Ints, und eine Zeichenfolge hat auch Zeichen. Wie ändere ich meinen Code so, dass er für Strings und nicht für int funktioniert? Ich weiß, dass der erste Schritt ist, die nextInt-Methoden herauszunehmen und sie so zu ändern, dass sie sowohl für Strings als auch für die anderen int-Variablen im Code funktioniert. Kann mir jemand helfen?

// 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"); 
    } 

} 

Antwort

0

Nur Änderungen werden hier veröffentlicht. Der Rest des Codes bleibt gleich.

  1. Datentyp des Arrays von Int String
  2. console.nextInt() geändert console.next geändert wird(), die einen String auf return
  3. Schleife durch das String-Array gelesen werden, und die Länge vergleichen, einzelner Saiten gegen den Durchschnitt der Länge der Saiten.

Das ist alles, was erforderlich ist.

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

Edited ursprünglichen Code mit den Änderungen, die Sie sagten. Funktioniert immer noch nicht. Bitte beachten Sie meine Änderungen im Code jetzt über –

+0

w00t !! Sie müssen den String, den Sie gelesen haben, dem Array zuweisen und dann verwenden. Zeichenfolgen [i] = nextLine; scheint in Ihrem Code zu fehlen. – aksappy

+0

Ich muss die Scanner-Methode next() anstelle von nextLine() verwenden, um die Zeichenfolgen –

-1

Sie könnte die folgende ändern Änderung
console.nextInt() zu console.nextLine()

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

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

+0

Funktioniert das, wenn ich nextLine() anstelle von nextLine() verwende? –

+0

@ m.daooo es würde funktionieren, wenn die Zeichenfolgen, die Sie verwenden, keine Leerzeichen in ihnen enthalten (dh Leerzeichen, Tabs usw.) – Maljam

+0

nextLine wird alles auf \ n (wenn der Benutzer die Eingabe) – ZergRushJoe

Verwandte Themen