Προς το περιεχόμενο

java παραδείγματα


hackertom

Προτεινόμενες αναρτήσεις

Δημοσ.
Αυτό έχει πολλά και πολύ χρήσιμα αλλα τα περισσότερα τα βρισκεις ψάχνοντας στο google ακριβώς με αυτό που θέλεις να κάνεις.. Τις περισσότερες φορές έχω βασιστεί επάνω σ αυτό το site, γι αυτό και το συστήνω.
Δημοσ.

Βασικά ψάχνω αλά πράγματα πράξεις μεταξύ αλφαριθμητικών (π.χ. να κάνω μια συνάρτηση να δέχεται ένα αλφαριθμητικό και να επιστρέφει τα σύμβολα που είναι αριθμητικά (0-9) και όχι τα γράμματα...)

 

και πράξεις μεταξύ μονοδιάστατων πινάκων (π.χ. μέσο όρο μεγαλύτερο μικρότερο...)

Δημοσ.

Το δεύτερο είναι αρκετά εύκολο μπορείς να το κάνεις με μία διάσχιση του πίνακα, εκτός αν θέλεις να χρησιμοποιήσεις έτοιμες μεθόδους της κλάσης Array, που κατα πάσα πιθανότητα θα έχει κάτι έτοιμο,

 

Όσο για το πρώτο δε κατάλαβα ακριβώς τι θέλεις να κάνεις.. Δέιξε ένα παράδειγμα με είσοδο και εξοδο...

Δημοσ.

Στο πρώτο αυτό που θέλω να κάνω είναι :

 

Π.Χ

Είσοδος από το πληκτρολόγιο : Ab3*8E0@-+k6

 

Στην έξοδο να μου βγάζει μόνο τους αριθμούς :3 8 0 6

 

πρέπει να γίνεται με δυαδική αναζήτηση αν δεν κάνω λάθος άπλα θα το ήθελα να το δω σε ολοκληρωμένο πρόγραμμα η κάτι παρόμοιο

Δημοσ.

Οχι δεν χρειάζεται δυαδική αναζήτηση. Θα πάρει τους χαρακτήρες και θα τους ελέξχεις εναν εναν αν είναι αριθμός.

Έχει νομίζω έτοιμη μέθοδο η java την isDigit() ( H υπογραφή της μεθόδου είναι boolean isDigit(char ch)) και όποτε σου επιστρέφει true θα περνάς τον αριθμό σε έναν πίνακα.

Έτσι στον πίνακα θα έχεις μόνο τους αριθμούς.

Δημοσ.

Χμμ.. κάτι τέτοιο δηλαδή είναι σωστό;

 

>public class Main {
  
   public boolean checkIfNumber(String in) {
       
       try {

           Long.parseLong(in);
       
       } catch (NumberFormatException ex) {
           return false;
       }
       
       return true;
   }

   public static void main(String[] args) {
       Main main = new Main();
       System.out.println( main.checkIfNumber("123") );
       System.out.println( main.checkIfNumber("ABC") );
       System.out.println( main.checkIfNumber("123123123123123") );
   }
}

Υ.Γ. Μια βοήθεια για τα πώς να περνάω τους αριθμούς που είναι true σε πίνακα στον παραπάνω κώδικα?

Δημοσ.

Έτσι όπως έχεις φτιάξει την μέθοδο έστω και ένας χαρακτήρας αν βρεθεί που να μην είναι αριθμός θα επιστρέφει false.

 

Εγώ θα την έφτιαχνα έτσι για να μου επιστρέψει σε ένα πίνακα όλους τους αριθμούς που θα έβρισκε στην συμβολοσειρά.

 

>

int numbers[]; //Δηλώνω τον πίνακα
public static int [] IsNumeric(String s)
{
numbers=new int[s.length]; // Αρχικοποιώ τον πίνακα να έχει τόσες θέσεις όσο είναι το πλήθος των χαρακτήρων της συμβολοσειράς στην ακραία περίπτωση που όλοι οι χαρακτήρες είναι αριθμοί.
if (s == null)
return numbers;

if (s.length() == 0)
return numbers;

for (int i = 0; i < s.length(); i++)
{
if (Character.isDigit(s.charAt(i))
   numbers[i]=Integer.parseInt(Character.toString(s.charAt(i)) //Περνάω στον πίνακα τον αριθμό αφού πρώτα τον μετατρέψω από χαρακτήρα σε συμβολοσειρά και κατόπιν σε ακέραιο.
}
return numbers; //Σε κάθε περίπτωση επιστρέφω τον πίνακα.
}

Δημοσ.

Βλέπω στο documentation της κλάσης String μία ενδιαφέρουσα μέθοδο, τη replaceAll:

 

>public String replaceAll(String regex,
                        String replacement)

   Replaces each substring of this string that matches the given regular expression with the given replacement.

 

Δε θα ήταν πιο εύκολο να χρησιμοποιηθεί αυτή; Αρκεί να συνταχθεί ένα regular expression που να κάνει match όλους τους χαρακτήρες πλην των αριθμητικών ψηφίων. Και το replacement string να είναι κενό, προφανώς...

Δημοσ.

Ευχαριστώ παιδιά για τις άμεσες απαντήσεις πάνω κάτω το κατάλαβα!

 

Δηλαδή με το ίδιο σκεπτικό μπορώ να ελέγξω και αν ένας αριθμός είναι γραμμένος με μικρά και ένας με κεφαλαία και να το μετατρέπει από μόνο του σε κεφαλαία?

 

Δηλαδή abcDEf --> ABCDEF

 

Αλλάζει η συνάρτηση κάπως;

Δημοσ.

Η καλύτερη λύση είναι αυτή που προτείνει ο πάρσιφαλ, χρησιμοποίησε regular expressions για να κάνεις τη δουλειά σου. Π.χ. αν θέλεις να επιστρέψεις μόνο τους αριθμούς κάνεις το παρακάτω

 

>
String s = "Ab3*8E0@-+k6";
String a = s.replaceAll("[^0-9]", "");
System.out.println(a);

 

Το παραπάνω μπορείς να το αλλάξεις για διαφορετικές λειτουργίες. Π.χ. αν θέλεις να βρεις μόνο τα γράμματα (κεφαλαία και μικρά) κάνεις

 

>
String s = "Ab3*8E0@-+k6";
String a = s.replaceAll("[^a-zA-Z]", "");
System.out.println(a);

 

κοκ.

 

Δηλαδή με το ίδιο σκεπτικό μπορώ να ελέγξω και αν ένας αριθμός είναι γραμμένος με μικρά και ένας με κεφαλαία και να το μετατρέπει από μόνο του σε κεφαλαία?

 

Δηλαδή abcDEf --> ABCDEF

 

Αλλάζει η συνάρτηση κάπως;

 

Ένας αριθμός θα είναι πάντα γραμμένος σε μία μορφή, δεν υπάρχουνε μικροί και μεγάλοι αριθμοί. Προφανώς εννοείς τα γράμματα. Το καλύτερο που έχεις να κάνεις σε αυτή την περίπτωση είναι να χρησιμοποιήσεις την toLowerCase() ή την toUpperCase().

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...