Gå til innhold

Hjelp å legge inn metode + problem med løkke(resultat blir skrevet ut to ganger)


Anbefalte innlegg

Jeg har litt problem med følgende kode:

 

import java.util.Scanner;
public class soppsaus {
 public static void main(String[] args) {
   Scanner tastatur = new Scanner(System.in);

   System.out.println("Skriv en statusstreng  per linje.\nInnlesing avsluttes med tom linje.\n");

   /*String bestått ="Godkjent";
    String iB ="ikke godkjent";
    String iV ="ikke levert"; */

   int[] charCount = new int[3];


   while (true) {
     System.out.print ("Angi statusstreng (+, -, x):"); //statusstreng
     String test = tastatur.nextLine();

     if(test.length()==0)
       break;

     for (int i = 0; i < test.length(); i++) {


       if (test.charAt(i) == 'x') {charCount [0] ++; } //ikke levert
       if (test.charAt(i) == '-') {charCount [1] ++; } // ikke godkjent
       if (test.charAt(i) == '+') {charCount [2] ++; } //godkjent
     }
   }

   for(int i = 0; i < charCount.length; i++) {

     if (charCount[i] == 0)
       continue;

     System.out.println("Ikke levert: " + charCount[0] );
     System.out.println("Ikke godkjent: " + charCount [1] );
     System.out.println("Godkjent: " + charCount [2] );

   }

   /* public static boolean godkjent(String input){
    if (input.equals????
    return System.out.println("Statusstreng" + + "inneholder en ugyldig verdi og vil bli ignorert");
    returnfalse;*/
 }}

 

Denne koden leser inn antall ganger en har tastet x,- og +. Trykker du enter etter du har skrevet inn en verdi i strenger, kommer en ny streng, slik at du fortsatt kan skrive verdi, beregningene blir postet i output når du ikke taster en verdi i streng en gang,

litt lettere å forstå når jeg viser hvordan en kjøring skal være:

 

String: ++x-

String: --

String: xx

String: (enter)

x: 3

-: 3

+: 2

 

Problemet i koden jeg har skrevet, er at resultatet blir skrevet ut to ganger! Hva er årsaken til dette?

 

 

Sørsmål 2:

 

Som dere ser har jeg skrevet inn en metode helt på slutten, eller iallefall prøvd å skrive. Jeg stoppet imidlertid litt opp da jeg fant ut at jeg hadde generelt lite peiling om hvordan jeg skulle skrive denne koden (første gang jeg gjør dette). Håper derfor det er mulig å få litt hjelp av dere

 

det jeg ønsker denne metoden skal gjøre er at dersom den som bruker programmet skriver inn en ugyldig verdi, blir denne strengen ignorert . Eksempel på kjøring:

 

Streng: xx-xx

Streng: --x-

Streng: -T---

Statusstreng -----T--- inneholder en ugyldig verdi og vil bli ignorert.

Streng: --++

Streng: +

Streng:

x:5

-: 9

+: 3

 

Hvordan kan jeg gjøre dette?

 

Takker på forhånd for hjelp!

Lenke til kommentar
Videoannonse
Annonse

    
   for(int i = 0; i < charCount.length; i++) {

     if (charCount[i] == 0)
       continue;

     System.out.println("Ikke levert: " + charCount[0] );
     System.out.println("Ikke godkjent: " + charCount [1] );
     System.out.println("Godkjent: " + charCount [2] );

   }

 

Det du egentlig prøver å gjøre her er:

 

if( charCount[0] > 0 )
  System.out.println("Ikke levert:  "+ charCount[0]);
if( charCount[1] > 0 )
  System.out.println(...;
...

 

Om du flytter resultatet ut av løkken vil det ikke komme ut flere ganger.

 

For spørsmål to må du i den nye metoden din gå igjennom hele strengen slik du har gjort tidligere, men istedenfor if statements kan du bruke f.eks

 

char c = test.charAt(i);
switch(c) {
  case 'x':
  case '-':
  case '+':
     continue;
  default:
     // Strengen inneholder en ugyldig verdi
     return false;
}

 

Dette betyr kort fortalt at om tegnet er, 'x', '-' eller '+' så hopper den til neste iterasjon i løkken. Er den noe som helst annet vil den kjøre innholdet i default: blokken.

Lenke til kommentar

Takker. Fikk til dette til slutt.

 

Ellers har jeg litt problem med følgende kode:

 

import java.util.Scanner;

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

   Scanner tastatur = new Scanner(System.in);

   System.out.print ("Angi antall kolonner:");
   int kolonne= tastatur.nextInt(); //leser inn intastet data

   System.out.print ("Angi antall rader:");
   int rad = tastatur.nextInt(); 
   { 
     if (kolonne == 0 || rad == 0)
       System.out.println("Du har tastet en ugyldig verdi, prøv igjen.");
   }


   for ( int i = 0; i < kolonne; i++) { //kolonne
     System.out.println();  


     for (int j = 0; j < rad; j++) { //rad
       System.out.print ("(i = "+ i +" , j = "+ j +")" );  //resltat       

     }
   }
 }
}

når noen skriver inn en ugyldig verdi, skal det komme en feilmelding. en ugyldig verdi er her 0. Taster noen 0, skal programmet ikke kjøre og lage en feilmelding.

 

 

Skriver jeg inn 12 og 0 no, kommer feilmeldingen og ingen rader blir skrevet, men programmet kjører.

 

Hvordan kan jeg skrive om denne setningen

     { 
     if (kolonne == 0 || rad == 0)
       System.out.println("Du har tastet en ugyldig verdi, prøv igjen.");
   }

slik at dersom noen taster f.eks 12 og 0, kommer bare feilmeldingen og programmet stopper?

 

Er litt kjent med i c kan jeg bruke break, hva kan jeg bruke i java?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...