2023-09-12, 10:52
  #1
Medlem
Kerem89s avatar
Hej, har pluggat JAVA i några veckor och undrar gällande denna fråga:

Här nedan är det ett stycke kod som du ska läsa och förstå.
På rad 6 ska användaren skriva in ett ord och på rad 8 ska användaren skriva in en siffra.
Du lista ut vad du som användare kan skriva in för ord och tal för att lyckas skriva ut:
”Good job! You won!”.
För att få rätt på uppgiften behöver ange inputs som ger detta svar.
Kod:
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner input= new Scanner(System.in);
        System.out.print("Skriv ett ord: ");
        String word = input.nextLine();
        System.out.print("Skriv en siffa: ");
        int number = input.nextInt();
        input.nextLine();
        char[] allLetters = word.toCharArray();
        if(allLetters[allLetters.length - number] == 'B'){
            if (number % 2 != 0){
                System.out.printf("you won");
            }
            else{
                System.out.printf("you lost");
            }


        }


    }
}

Mitt svar ord: BBBBBB
Mitt svar siffra: 3

Era rekommendationer för att ta sig an en sådan fråga, finns det något speciellt tankesätt?
__________________
Senast redigerad av Proton 2023-09-12 kl. 20:39.
Citera
2023-09-12, 11:10
  #2
Medlem
JohannesSnajdares avatar
N:te bokstaven från slutet i ordet måste vara ett 'B' samt att N ska vara ett udda tal.

kAlaBaLiK
5

vinner också
Citera
2023-09-12, 11:16
  #3
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av Kerem89
Hej, har pluggat JAVA i några veckor och undrar gällande denna fråga:

Här nedan är det ett stycke kod som du ska läsa och förstå.
På rad 6 ska användaren skriva in ett ord och på rad 8 ska användaren skriva in en siffra.
Du lista ut vad du som användare kan skriva in för ord och tal för att lyckas skriva ut:
”Good job! You won!”.
För att få rätt på uppgiften behöver ange inputs som ger detta svar.
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner input= new Scanner(System.in);
System.out.print("Skriv ett ord: ");
String word = input.nextLine();
System.out.print("Skriv en siffa: ");
int number = input.nextInt();
input.nextLine();
char[] allLetters = word.toCharArray();
if(allLetters[allLetters.length - number] == 'B'){
if (number % 2 != 0){
System.out.printf("you won");
}
else{
System.out.printf("you lost");
}


}


}
}

Mitt svar ord: BBBBBB
Mitt svar siffra: 3
[/b]

Era rekommendationer för att ta sig an en sådan fråga, finns det något speciellt tankesätt?
Tankesättet är väl att gå igenom vad programmet gör och identifiera relevanta villkor, jag identifierar snabbt att dessa är (urklippta nedan - utan inbördes ordning)
  1. if (number % 2 != 0)
  2. if(allLetters[allLetters.length - number] == 'B')
Vad är då number? Jo, det nummer som användaren skriver in.
Vad är allLetters? Jo, det är en array som består i textsträngen som användaren skriver in.
Nyckeln för dig blir att förstå de två villkoren.

Vad betyder t.ex. operatorn %? Detta kan du kolla upp lätt.
Vad betyder jämförelseoperatorerna "!=" och "==" ?
Hur fungerar en array, vad innebär .length t.ex?
__________________
Senast redigerad av Enterprise 2023-09-12 kl. 11:20.
Citera
2023-09-12, 11:22
  #4
Medlem
PissBusss avatar
Citat:
Ursprungligen postat av Kerem89
Hej, har pluggat JAVA i några veckor och undrar gällande denna fråga:

Här nedan är det ett stycke kod som du ska läsa och förstå.
På rad 6 ska användaren skriva in ett ord och på rad 8 ska användaren skriva in en siffra.
Du lista ut vad du som användare kan skriva in för ord och tal för att lyckas skriva ut:
”Good job! You won!”.
För att få rätt på uppgiften behöver ange inputs som ger detta svar.
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner input= new Scanner(System.in);
System.out.print("Skriv ett ord: ");
String word = input.nextLine();
System.out.print("Skriv en siffa: ");
int number = input.nextInt();
input.nextLine();
char[] allLetters = word.toCharArray();
if(allLetters[allLetters.length - number] == 'B'){
if (number % 2 != 0){
System.out.printf("you won");
}
else{
System.out.printf("you lost");
}


}


}
}

Mitt svar ord: BBBBBB
Mitt svar siffra: 3
[/b]

Era rekommendationer för att ta sig an en sådan fråga, finns det något speciellt tankesätt?

Nej, på den här nivån är det bara att gnugga in ceremonielet och lära sig termerna utantill. Ta det där och börja ändra i det och se vad som händer. Gör så att om man matar in 'flashbackdase' så testas inte siffran utan programmet skriver ut 'YATTA' tre gånger och avslutas sedan. System.exit() kan vara bra att känna till för det, men det är inte nödvändigt.

Målet är att du ska kunna skriva kod ungefär som du skriver vanlig text, vägen dit går via ändlösa timmar av att försöka skriva kod och leta efter vilken rad som är relevant av de felmeddelandet pekar på.
Citera
2023-09-12, 20:40
  #5
Moderator
Protons avatar
CODE-taggar tillagda i trådstarten
Rubrik justerad: Java klurigheter, hur ska man tänka för att förstå vad koden gör?
/Moderator
Citera
2023-09-24, 02:31
  #6
Medlem
tantrs avatar
Citat:
Ursprungligen postat av Kerem89
Hej, har pluggat JAVA i några veckor och undrar gällande denna fråga:

Här nedan är det ett stycke kod som du ska läsa och förstå.
På rad 6 ska användaren skriva in ett ord och på rad 8 ska användaren skriva in en siffra.
Du lista ut vad du som användare kan skriva in för ord och tal för att lyckas skriva ut:
”Good job! You won!”.
För att få rätt på uppgiften behöver ange inputs som ger detta svar.
Kod:
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner input= new Scanner(System.in);
        System.out.print("Skriv ett ord: ");
        String word = input.nextLine();
        System.out.print("Skriv en siffa: ");
        int number = input.nextInt();
        input.nextLine();
        char[] allLetters = word.toCharArray();
        if(allLetters[allLetters.length - number] == 'B'){
            if (number % 2 != 0){
                System.out.printf("you won");
            }
            else{
                System.out.printf("you lost");
            }
        }
    }
}

Mitt svar ord: BBBBBB
Mitt svar siffra: 3

Era rekommendationer för att ta sig an en sådan fråga, finns det något speciellt tankesätt?

Nu var det länge sedan jag kodare.

Men det ser ju ut som man sparar användarens sträng i en Array beståendes av av typen CHAR. Så varje bokstav får en plats i Arrayen,

Därefter Användarens siffra i en INT.

Sedan betyder. % 2 om talet är jämnt delbart.
DVS. Blir resultatet ojämnt, dvs ett resultat med decimaler blir det resultatet "1", och koden "avslutas". Är det delbart utan ett resultat med decimaler så blir resultatet "0" och koden "fortsätter" att kolla vad som händer därefter.

Sedan kollar man ARRAYEN..

Man kollar hur många element som finns i arrayen, antalet tecken(beroende på vad användaren matat in för ord).

Låt oss säga att användaren matat in "hejsan" & man valt nummer 4...

Då kollar man hur många element Arrayen har, I detta fall 6 "element"(hejsan består av 6 chars). En bokstav per plats.

Så egentligen behöver du endast ange ett jämnt nummer + ett ord som har bokstaven "B" på plats dinCharArray.size - number

Var krångligt att förklara utan att förklara allt! XD
__________________
Senast redigerad av tantr 2023-09-24 kl. 02:43.
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in