Methoden Finde Secquenz ineinem array

Lazyyy

Mitglied
Hi
ich habe ein array der größe 1000 in das zufallszahlen eingelesen wurden ( zwischen 1 und 6)

Java:
for(int i = 0; i < 999; i ++){
            numbers[i]=r.nextInt(6)+1;
        }
meine aufgabe an der ich hänge:
nun bin auch auf der suche nach einer methode die mir die stelle der ersten Sequence von zahlen anzeigt die
mind. größe zwei hat und mir die länge der Sequenz auch verrät.
 
wenn des array zb so aussieht [1,2,3,1,3,2,3,3,3,3,4]


und nun bin ich auf der suche nach einer sequence länge n zb 4 dann wäre die antwort 6

checkWiederh(x,4) = 6
 
Zuletzt bearbeitet:
Sequence == gleiche aufeinanderfolgende zahlen
selber schreiben,
Java:
for( int i =0; i <numbers.length, i++){
 if( numbers[ i] ==numbers[ i+1]{
   //ToDo
 }
}
 
Moin,

hmm, wo ist denn da das Problem?
Lauf' in einer Schleife durch das Array und merke Dir lokal jeweils den Wert des aktuellen Durchlaufs um ihn beim nächsten Durchlauf zu vergleichen .....
Wenn die Werte gleich sind, ist die vorherige Position die gesuchte Stelle!
Wenn Du dann weiterläufst, kannst Du doch einfach die Anzahl gleicher Werte feststellen ...

Gruß Klaus
 
ne geht eher um die methode nennen wir sie

checkWiderholungen(int x,)
readInt = " ";

und dann eben an welcher Stelle die erste Sequnce(Wiederholung) kommt die ich suche.
 
daraus kannst du dir deine methode basteln

hab gerade festgestellt, dass es noch nicht ganz stimmt. sry.
 
Zuletzt bearbeitet:
Die ausgabe des numbers[] stimmt noch nicht ganz aber der rest läuft

Java:
public class Sequence{
    
    private ArrayList< int[]> sequences =new ArrayList<>();
    private int[] numbers =new int[ 1000];
    
    void initNumbers(){
        Random dice =new Random();
        for( int i =0; i <numbers.length; i++){
            numbers[ i] =dice.nextInt( 6) +1;
        }
    }
    
    void coundSequences(){
        int number =0;
        int count =1;
        int[] sequence;
        for( int i =0; i < numbers.length-1; i++){
            if( numbers[ i] == numbers[ i+1]){
                number =numbers[ i];
                count++;
            } else{
                if( count >=2){
                    sequence =new int[ 2];
                    sequence[ 0] =number;
                    sequence[ 1] =count;
                    sequences.add( sequence);
                    count =1;
                } else{
                    count =1;
                }
            }
        }
    }
    
    void printOut(){
        for( int[] i :sequences){
            System.out.println("number " +i [ 0] +" Sequenzlänge " +i[ 1]);
        }
    }
    
    void printNumbers(){
        int interCounter =0;
        int i;
        while( interCounter <40){
            for(i =0; i < numbers.length; i++){
                System.out.print( numbers[ i] +" ");
            }
            System.out.println("");
            if( i <numbers.length){
                interCounter =0;
            } else{
                interCounter =50;
            }
        }
    }
}
 
Wenn ich die Aufgabe richtig verstanden habe, wäre das auch eine Lösung:

Java:
	public static void main(String[] args) {
		int[] array = {1,2,3,1,3,2,3,3,3,3,4};
		sequence(array, 4);
	}
	
	public static int sequence(int[] array, int length){
		String regex = "([0-9])\\1{"+(length-1)+",}";
		Pattern pattern = Pattern.compile(regex);
		Matcher matcher = pattern.matcher(intArrayToString(array));
		if(matcher.find()){
			int index = matcher.start();
			System.out.println("Found sequence at index: " + index);
			return index;
		}else{
			System.out.println("Could not find sequence of given length: " + length);
			return -1;
		}
		
	}
	
	private static String intArrayToString(int[] array) {
        String strRet="";
        for(int i : array) {
            strRet+=Integer.toString(i);
        }
        return strRet;
    }
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben