Carana Skrevet 10. september 2012 Del Skrevet 10. september 2012 (endret) Hallo, Jeg er i startfasen når det gjelder Java (går INF1000 på UiO), men kan noe C++ fra før. I kveld begynte jeg å leke meg med funksjoner i Java, og tenkte å skrive en enkel kalkulator for å gjøre addisjon og subtraksjon. Problemet er egentlig denne blokken her, i main: System.out.print("Tall 1: "); tall1 = sc.nextInt(); System.out.print("Operator: "); test = sc.next(); regneart = test.charAt(0); System.out.print("Tall 2: "); tall2 = sc.nextInt(); int sum = beregn(tall1, tall2, regneart); Jeg har veldig lyst til at bruker skal kunne skrive inn regnestykket som en setning (f.eks. "4+3"), og slippe å trykke return mellom tall1, operator og tall2. I C++ har jeg løst problemet på følgende måte: cin >> tall1 >> regneart >> tall2; int sum = beregnSvar(tall1, tall2, regneart); C++varianten ser selvfølgelig mye mer oversiktlig ut for informatikere, og fungerer bedre for brukeren av programmet. Kan noen fortelle meg om det finnes en tilsvarende måte å gjøre dette i Java? Dette er ingen skoleoppgave, så jeg har ikke noe i mot det om noen løser problemet for meg På forhånd takk! Endret 10. september 2012 av Carana Lenke til kommentar
xaco Skrevet 11. september 2012 Del Skrevet 11. september 2012 (endret) en måte du kan gjøre det på er å spørre om hele regnestykket. Scanner inn = new Scanner(system.in); String regnestykke; System.our.println("Skriv regnestykke:") regnestykke = inn.nextLine(); String deler = regnestykke.split(" "); int sum = beregn(deler[0], deler[2], deler[1]); Nå må da beregn metoden kunne gjøre om strengene til heltall eller må du bruke metoder i klassen Integer for å skaffe deg heltall å sende med. eller noe som dette. Scanner inn = new Scanner(system.in); System.out.print("Skriv regnestykke: " int tall1 = inn.nextInt(); String regneart = inn.next(); int tall2 = inn.nextInt(); int sum = beregn(tall1, tall2, regneart); Mange måter å løse det på. de to eksemplene jeg har gitt funker bare vis man har mellomrom i mellom. skal du bare ha streng sammenhengende, så ville jeg sett på regex(illefall for så lette mattestykker). Endret 11. september 2012 av xaco Lenke til kommentar
Carana Skrevet 11. september 2012 Forfatter Del Skrevet 11. september 2012 Takk så mye for svar! Jeg fikk det til å fungere (uten mellomrom) på denne måten. Tungvint, men fungerende -- sikkert ikke noe jeg ville fått toppkarakter for, dog. import java.util.*; public class KalkFunction { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int tall1; int tall2 = 0; char regneart; String test; test = sc.nextLine(); tall1 = Integer.parseInt(nextInteger(test.toCharArray(), 0)); int curpos = nextInteger(test.toCharArray(), 0).length()+1; regneart = test.charAt(curpos-1); tall2 = Integer.parseInt(nextInteger(test.toCharArray(), curpos)); System.out.println(tall1 + " " + regneart + " " + tall2); int sum = beregn(tall1, tall2, regneart); System.out.println("\n" + tall1 + " " + regneart + " " + tall2 + " = " + sum); } public static boolean isDigit(char in) { if(in >= 48 && in <= 57) return true; else if(in == 32) return true; else return false; } public static String nextInteger(char []in, int pos) { String integer = ""; while(pos < in.length && isDigit(in[pos])) { integer += in[pos]; pos++; } return integer; } public static int beregn(int tall1, int tall2, char regneart){ int sum; if(regneart == '+'){ sum = tall1 + tall2; } else{ sum = tall1 - tall2; } return sum; } } Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå