2016-08-04 7 views
0

Ok, also arbeite ich an diesem Code zu mischen Geisteswissenschaften und STEM. Ich kenne sehr grundlegenden Java-Code und so versuche ich derzeit, an String-Methoden zu bleiben. Ich weiß, dass die Verwendung von Arrays einfacher sein kann, aber ich bin nicht gut darin geschult, sie zu verwenden. Bisher habe ich einen Code erstellt, der die Wörter in der Zeichenfolge zählt, um zu bestimmen, wie viele Wörter zu entfernen sind (die Hälfte davon). Als nächstes muss ich eine Möglichkeit finden, die Hälfte der Wörter zufällig zu entfernen und eine neue Zeichenfolge zurückzugeben, möglicherweise mit Leerzeichen, die die entfernten Buchstaben ersetzen.Ich muss zufällig die Hälfte der Wörter in einer Zeichenfolge in Java entfernen

Hier ist mein Code so weit:

public class wordcount 
{ 
    public static void main (String[] args) 
    { 

    System.out.println("Simple Java Word Count Program"); 

    String str1 = "Look, you want it you devour it and then, then good as it was you realize it wasn’t what you exactly wanted what you wanted exactly was wanting"; 

    String[] wordArray = str1.split("\\s+"); 
    int wordCount = wordArray.length; 

    System.out.println(str1 + ""); 

    System.out.println("Word count is = " + wordCount); 

    int wordCount2 = wordCount/2; 


} 

}

+0

Welche Frage fragen Sie? Sind Sie daran interessiert, wie Sie Zufall erzeugen oder wie Sie Elemente aus Ihrem Array entfernen können? – sprinter

+1

Neben der wirklich offensichtlichen "Was genau ist Ihre Frage" .. lesen Sie bitte über Java Coding Style Guides. Klassennamen beginnen mit Großbuchstaben, und Sie verwenden auch CamelCase ... und auch wenn Sie gerade erst anfangen: versuchen Sie, Ihren Sachen hilfreiche Namen zu geben. Wie: "str1" sagt nichts über den beabsichtigten Gebrauch. Benenne das in etwas wie "fullSentence" oder etwas Ähnliches, und auf einmal ist es sehr klar, worum es geht. Und nenn nicht etwas wordArray - die Art der Sammlung könnte sich ändern; also nenne es einfach "allTheWords". – GhostCat

Antwort

2

ich das Array zu einer Arraylist kopiert, um dann durch die Liste durchlaufen und zufällige Elemente löschen. Ich hoffe, dass dies die Art von Antwort ist, nach der Sie suchen.

public static void main(String[] args) { 

    String str1 = "Look, you want it you devour it and then, then good as it was you realize it wasn’t what you exactly wanted what you wanted exactly was wanting"; 

    String[] wordArray = str1.split("\\s+"); 
    ArrayList<String> wordList = new ArrayList<String>(Arrays.asList(wordArray)); 

    int wordCount = wordList.size(); 
    int halfWordCount = wordCount/2; 
    int tracker = 0; //counter for iterations in while loop 

    Random random = new Random(); 
    while(tracker < halfWordCount){ 
     int randomIndex = random.nextInt(wordList.size()); 
     wordList.remove(randomIndex); 
     tracker++; 
    } 
    System.out.println(wordList.toString()); 
} 
+0

Ich habe ein funktionierendes Ergebnis, aber ich würde gerne Eingaben und Änderungen machen. Ich brauche auch einen Weg, um Input für das Gedicht zu nehmen und nur die "Remove-Methode" nach einem Mausklick zu machen –

+0

Hat meine Antwort jemals für dich funktioniert? Wenn ja, könntest du es bitte akzeptieren? –

0
import java.util.Arrays; 
import java.util.* ; 
public class wordcount 
{ 
public ArrayList<Integer> test(Integer[] array) 
    { 
     ArrayList<Integer> list = new ArrayList<Integer>(); 
     for(int i=0; i<array.length; i++) 
      list.add(array[i]); 
     return list; 
    } 
public ArrayList<String> testS(String[] array) 
    { 
     ArrayList<String> list = new ArrayList<String>(); 
     for(int i=0; i<array.length; i++) 
      list.add(array[i]); 
     return list; 
    } 
public static void main (String[] args) 
{ 

    System.out.println("Removing random words in a Poem Program"); 

    String str1 = "Sample Poem by Noah Eli Gordon: Look, you want it you devour it and then, then good as it was you realize it wasn’t what you exactly wanted what you wanted exactly was wanting"; 

    String[] wordArray = str1.split("\\s+"); 
    int wordCount = wordArray.length; 

    System.out.println(str1 + ""); 

    //System.out.println("Word count is = " + wordCount); 

    //System.out.println(wordArray); 
    //String[] ret = wordArray; 
    //for(String str : ret) 
    // System.out.print(str); 

    int wordCount2 = wordCount/2; 

    Integer[] myIntArray = new Integer[wordCount]; 
    //for(int i = 0; i<wordCount;i++) 
    // myIntArray[i] = i; 
    //for(int str : myIntArray) 
     //System.out.print(str); 

    wordcount w = new wordcount(); 
    String[] wordArray2 = new String[wordCount2]; 

    for(int i = 0; i <= wordCount2; i++) 
    { 
     int rand = (int)(Math.random()*(myIntArray.length-1)); 
     ArrayList<Integer> list = w.test(myIntArray); 
     list.remove(rand); 
     myIntArray = list.toArray(myIntArray); 
     ArrayList<String> listS = w.testS(wordArray); 
     listS.remove(rand); 
     wordArray2 = listS.toArray(wordArray); 


    } 
    List<String> list = new ArrayList<String>(); 

    for(String s : wordArray2) 
    { 
     if(s != null && s.length() > 0) 
     { 
      list.add(s); 
     } 
    } 

    wordArray2 = list.toArray(new String[list.size()]); 

    //for(int str : myIntArray) 
     //System.out.println(str); 
    System.out.println(); 
    String[] ret2 = wordArray2; 
    for(String str : ret2) 
     System.out.print(str + " "); 
} 
}