View Single Post
Innestengt
Spelly's Avatar
Trådstarter
Takker for gode tilbakemeldinger!
Det stemmer at dette er noe mastermind-aktig spill.

Får dessverre ikke programmet til å fungere i det hele tatt, jeg har prøvd å fikse feilmeldinger i timesvis uten resultat. I begynnelsen hadde jeg 4 feilmeldinger, no har jeg 18.

er det noen som kunne hjulpet meg å rydde litt i koden?

Kode

import java.util.Scanner;

public class MasterMind1 {
//hemmelig streng  
  public static final String hemmelig = "+-*#";
  
  // Metoden teller hvor ofte en tegn forekommer i en streng.

  public static int antallForekomst(char tegn, String streng) {
    
    int[] teller = new int[4]; //Dekalerer teller
    
    for (int i = 0; i < hemmelig.length(); i++) { //teller hvor ofte et tegn forekommer i en streng
      
      if (streng.charAt(i) == '+') {teller [0] ++; } 
      if (streng.charAt(i) == '-') {teller [1] ++; } 
      if (streng.charAt(i) == '*') {teller [2] ++; } 
      if (streng.charAt(i) == '#') {teller [3] ++; }
    }
  }
  for(int i = 0; i < teller.length; i++) {   
  }
  
  // Metoden kontrollere at alle tegn i den angitt strengen forekommer i den hemmelige strengen.
  public static boolean harLovligeTegn(String innStreng) { 
    for (int n = 0; n < hemmelig.length(); n++) { 
      if (innStreng.indexOf(hemmelig.charAt(n)) == -1) { 
        return false; 
      } 
    } 
    return true; 
  }
 
  /* 
   * Metoden kontollerer at alle tegn fra den hemmelige strengen forekommer høyst én gang i 
   * den angitte strengen. */
  public static boolean kontrollerForekomster(String innStreng) {
    if (hemmelig.charAt(innStreng) == tegn) antall = 1;  {
      return false;
    }
    {
  
  return true;
    }  
}
  
// Metoden kontrollere at strengen er gyldig:

public static boolean erGyldig(String innStreng, String hemmelig) {

  for(int inn = 0; inn < innStreng.length(); inn++) {
    int teller = 0;
    for(int gyldig = 0; gyldig < charRekke.length; gyldig++) {
      if(innStreng.charAt(inn) != charRekke[gyldig]) {
        teller++;
      }
      if(teller >= 4) {
        return false;
      }
      else {
        teller = 0;
    }
  }

      
      // Metoden teller antall riktige tegn som er på riktig plass i den angitte strengen.
      public static int antallRiktige(String innStreng) {
        int antallRiktige = 0;
        if (erGyldig()(innStreng)) {
          // teller antall tegn på riktig plass
          for (int i = 0; i < innStreng.length(); ++i) {
            if (innStreng.charAt(i) == hemmelig.charAt(i)) {
              ++antallRiktige;
            }
          }
          System.out.println("Strengen innholder " + antallRiktige + " tegn på riktig plass.");
        }
        return antallRiktige;
      }
      
      public static void main(String[] args) {
        //Sett opp lesing fra tastatur
        Scanner tastatur = new Scanner(System.in);
        
        boolean ferdig = false;
        do {
          // Les ny streng
          System.out.println("Angi streng med lengde " + hemmelig.length() + 
                             " som innholder tegn fra {+, -, *, #}:");
          String streng = tastatur.nextLine();
          
          // er programmet ferdig?
          ferdig = (antallRiktige(streng) == hemmelig.length());
        } while (!ferdig);
        
        System.out.println("Gratulerer! Strengen er lik hemmelig streng.");    
      }
}    
}
Mulig den ser litt rotete ut, dette fordi jeg har endret på litt underveis.

Betaler forøvrig gledelig 50.- som takk, til den som kan hjelpe meg å rydde opp koden.