Simpele java (school)vraag!

Status
Niet open voor verdere reacties.

Jeesie

Nieuwe gebruiker
Lid geworden
6 nov 2012
Berichten
4
Beste,

Ik zit nu echt vast bij een schoolopdracht die ik over twee dagen moet inleveren. De meeste vragen zijn mij gelukt maar 2 kleine vraagjes lukken mij niet en ik ben nog heel slecht in Java.

Eerste vraag:
In deze opdracht moet je de karakters van een string roteren naar links. Je moet dus ieder karakter
cyclisch over één positie naar links opschuiven. Het meest linkse karakter "valt er aan de linkerkant uit, en
schuift er aan de rechterkant weer in". Programmeer dit en lees in je programma de string in van
toetsenbord.

Voorbeeld van resultaat:
a. string "oliebol" wordt na roteren één positie naar links: "liebolo"
b. string "oliebol" en n = 3 levert op bij roteren naar links: "ebololi"
c. string "oliebol" en n = 3 levert op bij roteren naar rechts: "bololie"

Tweede vraag:
In deze opdracht moet een tijd in uren en minuten (maar geen seconden) worden omgezet naar spreektaal

Voorbeeld van resultaat:
11:15 kwart over elf
17:30 half zes
19:45 kwart voor acht
23:45 kwart voor twaalf

Als iemand mij hiermee kan helpen dan zou ik dat heel erg waarderen! Alvast bedankt.

Groetjes,

Jason
 
Beste,

Dit klopt, ik wil hier inderdaad ook van leren en niet zomaar een hele code overnemen. Maar een voorbeeld code zou wel handig zijn, hierdoor heb ik ook PHP/HTML/CSS/JAVASCRIPT etc. mee geleerd.

Maar om even terug te komen op jou reactie. Waarschijnlijk moet ik voor de characters te roteren eerst alle characters appart nemen en die vervolgens van plaats verwisselen in de string. Iets in deze richting?
[JS]for (int i = 0 ; i < string.length() ; i++) {
char ch = s.charAt(i);
//IETS DOEN MET DE CHARACTERS
}[/JS]

Waarschijnlijk moet ik voor de tijden switch cases gaan gebruiken? Maar zoals ik zei, ik ben echt nog een beginners op het gebied van JAVA. Mijn enige voordeel is dat ik andere scripttalen beheers. Daarnaast heb ik ook veel gegoogled, maar hier kwam niks nuttigs uit. Het valt me trouwens tegen hoeveel JAVA forums er zijn :eek:

Alvast bedankt!

Groetjes,

Jason
 
Dat hangt van de context af. Wat proberen ze je te leren daar? met behulp van default functies werkt ook zoiets:

[cpp]
textje = textje.substring(textje.length() - n , textje.length()) + textje.substring(0, n)
[/cpp]

maar als dat niet het leerdoel is heb je hier niets aan
 
@Wampier
Bedankt voor de code! Ik heb er wat mee gerommeld maar ik kom er niet helemaal uit. Om de code te testen heb ik dit gedaan:
[JS]public class Main
{
public static void main(String[] args)
{

String textje = "HELLO";
int n = 1;

textje = textje.substring(textje.length() - n , textje.length()) + textje.substring(0, n);
System.out.println(textje);
}
}[/JS]

De output hiervan zou moeten zijn "ELLOH". Maar helaas staat er nu alleen "OH". Ik heb de functie substring opgezocht (Hier: http://www.roseindia.net/java/beginners/SubstringExample.shtml) maar ik kan niet helemaal wat jij in deze functie doet.

Zou je me nog verder kunnen helpen? Alvast bedankt!

Groetjes,

Jason
 
Oplossing

Het is me uiteindelijk gelukt met het volgende script:
Code:
public class Main
{
    public static void main(String[] args)
    {
	//INVOER
	String invoer = "HELLO";
	int verschuiving = 1;

	//UITKOMST
	String uitkomst = invoer.substring(verschuiving)+invoer.substring(0,verschuiving);
	System.out.println(uitkomst);
    }
}

Dit script heeft de volgende output: ELLOH. Nu wil ik ook nog dat de characters naar rechts kunnen schuiven (ipv naar links). Helaas kan ik int verschuiving niet veranderen naar '-1', want dan krijg ik een error. Hoe los ik dit op?

Alvast bedankt
 
Hoi,

Volgende code zou je waarschijnlijk kunnen helpen met het doen voor je schoolopdracht.

Code:
//vraag a
public string swapCharactersToLeft(string ingegevenWaarde, int aantalSwitches)
{
    string toSet = ingegevenWaarde;
    int aantalKaraktersIngegevenWaarde = toSet.length();
    
    for(int i = 0; i < aantalSwitches; i++)
    {
        char toSwitch = ingegevenWaarde.charAt(aantalKaraktersIngegevenWaarde - 1); //vraag het karakter op die je wilt wisselen
        toSet = toSwitch + toSet.substring(0, ingegevenWaarde - 2); //let op -2 selecteert het stuk zonder de laatste letter
    }

    return toSet;
}

public string swapCharactersToRight(string ingegevenWaarde, int aantalSwitches)
{
    string toSet = ingegevenWaarde;
    int aantalKaraktersIngegevenWaarde = toSet.length();
    
    for(int i = 0; i < aantalSwitches; i++)
    {
        char toSwitch = ingegevenWaarde.charAt(0); //vraag het karakter op die je wilt wisselen
        toSet = toSet.substring(1, ingegevenWaarde - 1) + toSwitch; //wederom - 1, zo pak je de laatste karakter mee
    }

    return toSet;
}

Zou goed moeten zijn voor je vraag.

Wat ik dus continu doe is met de substring methode een deel van je string pakken die je wilt behouden.
Het deel je niet wilt behouden (voor rechts pak ik het eerste getal (0) en voor links het laatste getal) plak ik aan de andere kant van je string er bij.

Als dit vragen naar boven brengt, hoor ik het graag.

Lukt het wel met de spraak-klok-opdracht?

Hier alvast een aanzet:
Code:
public string tijdNaarTekst(int uur, int min)
{
    string geschrevenTijd = "";

    switch(min)
    {
        default: geschrevenTijd = "U heeft een aantal minuten ingevuld wat niet door dit programma herkend wordt. Bekijk uw invoer nogmaals."; break;
        case 0: geschrevenTijd = ""; 
            break;
        case 15: 
            geschrevenTijd = "kwart over"; 
            break;
        case 30: 
            geschrevenTijd = "half"; 
            uur++; //bij 30 en later: dan ga je over naar het volgende uur
            break; 
    }

    switch(uur)
    {
        default: geschrevenTijd = "U heeft een aantal uren ingevuld wat niet door dit programma herkend wordt. Bekijk uw invoer nogmaals."; break;
        case 0: 
            geschrevenTijd = " twaalf"; 
            break;
        case 1: 
            geschrevenTijd = " een"; 
            break;
        case 24: 
            geschrevenTijd = " twaalf"; 
            break; 
            //hier vang je de fout van het aantal minuten mee op. Is geen mooie oplossing. Kan met boolean verder worden opgelost, die controleert of er bij 23 een getal wordt opgeteld om halve en driekwart uren te berekenen.
    }

    return geschrevenTijd.trim(); //trim verwijdert overbodige spaties
}

Met vriendelijke groeten,


d0mzy
 
Laatst bewerkt:
Oeps stond klein foutje in mijn origineel. krijg je als je het uit de losse pols doet :) maar je hebt zelf de juiste.

Overigens voor de andere kant op roteren hoef je alleen de code maar om te draaien :p (rechts knippen links plakken
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan