Εργασία Java Επιστήμη Υπολογιστών [2009-2010]

Διδάσκοντες: Γ. Γραββάνης, Επ. Καθηγητής

Re: Εργασία Java Επιστήμη Υπολογιστών [2009-2010]

Δημοσίευσηαπό stelmitr » 24 Ιαν 2010, 21:36

Εμφανίζει true και στις δυο περιπτώσεις...
stelmitr
Newbie
 
Δημοσιεύσεις: 11
Εγγραφή: 30 Οκτ 2009, 16:12

Re: Εργασία Java Επιστήμη Υπολογιστών [2009-2010]

Δημοσίευσηαπό Stokos » 24 Ιαν 2010, 21:52

Ωραία, τότε περνάμε στο 2ο βήμα του debugging. Δοκίμασε να εισάγεις ένα String με 2-3 κενά και να εκτελέσεις το εξής:

Κώδικας: Επιλογή όλων
void main{
    int index = 0;
    String s = "en dyo tria";
    while(index < s.length()){
      System.out.println(index)
      char c = s.charAt(index++);
      System.out.println(Character.isWhitespace(c)
    }
}

Εdit: Διόρθωσα παρόραμα στο παραπάνω κώδικα.

Αν δουλέψει σωστά, θα σου βγάλει:
0
false
1
false
2
true
3
false
4
false
5
false
6
true
7
false
8
false
9
false
10
false


Άρα όντως αυτό το κομμάτι κώδικα διέτρεξε το κείμενο (String) και εντόπισε τα κενά.
Stokos
 

Re: Εργασία Java Επιστήμη Υπολογιστών [2009-2010]

Δημοσίευσηαπό antonisi » 24 Ιαν 2010, 22:30

Ο παραπάνω κώδικας δουλεύει σωστά όταν δεν διαβάζει το string αλλά το εκχωρούμε εμείς μέσα στο πρόγραμμα. Αλλά όταν διαβάζει το string από τον χρήστη δεν δουλεύει σωστά, βγάζει ως αποτέλεσμα αυτο:

Κώδικας: Επιλογή όλων
0
false
1
false
2
false
antonisi
Newbie
 
Δημοσιεύσεις: 3
Εγγραφή: 22 Ιαν 2010, 13:23

Re: Εργασία Java Επιστήμη Υπολογιστών [2009-2010]

Δημοσίευσηαπό Stokos » 24 Ιαν 2010, 22:41

Ωραία! Βρήκαμε που είναι το πρόβλημα τότε, στην είσοδο του String...

Δε ξέρω με ποιο τρόπο δοκιμάζετε να εισάγετε το string σας, αλλά καλύτερα κάντε το με τους εξής δύο κλασικούς τρόπους:

1.
Κώδικας: Επιλογή όλων
String text;
Scanner sc = new Scanner(System.in);
System.out.println("Enter your text.");
text = sc.nextLine();


2.
Κώδικας: Επιλογή όλων
String text;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter your text.");
text = br.readLine();


Λογικά, αν σας δουλέψει το παραπάνω προγραμματάκι ανίχνευσης κενών, θα δουλέψει και η αρχική συνάρτηση wordcount που δημοσίευσα. ;)
Stokos
 

Re: Εργασία Java Επιστήμη Υπολογιστών [2009-2010]

Δημοσίευσηαπό stelmitr » 24 Ιαν 2010, 23:10

χμ...και σχετικά με την καταμέτρηση των προτάσεων τι έχεις να προτείνεις???(δεχόμαστε ότι με τελεία και μόνο τελειώνει η κάθε πρόταση)
stelmitr
Newbie
 
Δημοσιεύσεις: 11
Εγγραφή: 30 Οκτ 2009, 16:12

Re: Εργασία Java Επιστήμη Υπολογιστών [2009-2010]

Δημοσίευσηαπό Stokos » 24 Ιαν 2010, 23:21

Τελικά, αφού αλλάξατε -υποθέτω- τη μέθοδο εισόδου, αυτό δούλεψε; Δίνει σωστά αποτελέσματα;
Stokos έγραψε:
Κώδικας: Επιλογή όλων
long wordcount(String text){
    long numWords = 0;
    int index = 0;
    boolean prevWhiteSpace = true;
    while(index < text.length()){
      char c = text.charAt(index++);
      boolean currWhiteSpace = Character.isWhitespace(c);
      if(prevWhiteSpace && !currWhiteSpace){
        numWords++;
      }
      prevWhiteSpace = currWhiteSpace;
    }
    return numWords;
  }



Για τη καταμέτρηση των προτάσεων όπως είπες και εσύ, εάν δεχθείς ότι κάθε πρόταση τελειώνει με τελεία είναι πολύ εύκολο... Θα κάνεις πάλι input το text, θα παίρνεις τους χαρακτήρες έναν προς έναν με τη συνάρτηση charAt και θα ελέγχεις με μια if αν ο χαρακτήρας αυτός είναι == με την τελεία '.'

Θέλει προσοχή όμως! Δεν θα δίνει πάντα σωστά αποτελέσματα!
Π.χ. "Οι σπουδές του Η.Μ.Μ.Υ. είναι δύσκολες..." Θα καταμέτρηθεί ως 7 προτάσεις αντί για μια... Αν έχετε όρεξη να ασχοληθείτε παραπάνω, είμαι σίγουρος ότι θα βρείτε τεχνάσματα να αποφύγεται αυτό το εμπόδιο (π.χ. ένα γράμμα μεταξύ 2 τελειών σημαίνει μάλλον συντομογραφία άρα δε καταμετρούνται οι τελείες).
Stokos
 

Re: Εργασία Java Επιστήμη Υπολογιστών [2009-2010]

Δημοσίευσηαπό stelmitr » 24 Ιαν 2010, 23:28

ευχαριστούμε πολύ για την πολύτιμη βοήθειά σου!!ναι πράγματι δουλεύει!!!!
stelmitr
Newbie
 
Δημοσιεύσεις: 11
Εγγραφή: 30 Οκτ 2009, 16:12

Προηγούμενη

Μέλη σε σύνδεση

Μέλη σε αυτή την Δ. Συζήτηση : Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης