26. januar 2001 - 20:38Der er
8 kommentarer og 1 løsning
vil ikke udskrive indhold af char-array
Hej, Mit problem er lidt kompliceret og svært at forklare. En opgave går ud på at få en metode til at genkende en af de fire operatorer (+, -, /, *) i en formel, man taster ind (input fra skærm). Tastes eksempelvis 32+12, skal metoden genkende +\'et(plus-operatoren).
jeg kan finde hvilken operator det drejer sig om ved hjælp af charAt-metoden
System.out.println(\"Skriv en \'formel\' for et regnestykke: (afslut med enter) \"); BufferedReader bfr=new BufferedReader(new InputStreamReader(System.in)); String opt=bfr.readLine(); System.out.println(); Char []op=new char[opt.length()]; // arrayets stoerrelse er afgjort af strengens laengde for (i=0;i<opt.length();i++) //204 { if (opt.charAt(i)!=(char)43|| opt.charAt(i)!=(char)45|| opt.charAt(i)!=(char)47|| opt.charAt(i)!=(char)42) op[i]=opt.charAt(i); // laegger streng ind i char-array }
Der er sikkert nogle, der kan genkende opgaven. Den er fra kap 5 i Henrik Kressner\'s Javabog..
Mit problem kommer når jeg skal udskrive arrayet. Jeg er ikke kommet videre i opgaven, da der bare udskrives .. noget tomt, dvs ikke noget.
jeg forsøger at udskrive vha flg. for (int i=0;i<op.length;i++) System.out.println(op[i]); // saa indhold kommer paa en linje, men NEJ!
1) linien Char []op=new char[opt.length()]; // arrayets stoerrelse er afgjort af strengens laengde er måske lovlig men prøv alligevel at flytte blanktegnet om på den anden side af klammerne: Char[] op=new char[opt.length()]; // arrayets stoerrelse er afgjort af strengens laengde
når der findes en operator bliver den ikke flyttet over i op[i] men i inkrementeres alligevel så alligevel så op[] arrayet ender med at indeholde en udefineret værdi. Prøv at lægge en else på betingelsen:
} else op[i] = \" \";
mvh JakobA
Synes godt om
Slettet bruger
26. januar 2001 - 23:54#2
Som din kode er skrevet, kan den ikke køre.
Der kan være sket følgende:
1. Din kode kan ikke kompilere, du har ikke opdaget det og tester på en gammel version.
2. Du har skrevet din kode forkert af.
I det sidste tilfælde er der en del, jeg ikke kan gennemskue:
a. \'Char []op...\' skal selvfølgelig, som jakoba skriver, være \'char[] op...\'. b. Din \'if\'-sætning er sær. Der står: \"Hvis karakteren ikke er \'+\' eller ikke \'-\' eller ikke osv. Da karakteren jo ikke KAN være både \'+\', \'-\' osv. på een gang, får du alt med.
Prøv i stedet med:
public static void main(String[] args) { System.out.println(\"Skriv en \'formel\' for et regnestykke: (afslut med enter) \"); BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in)); String opt = null; try { opt = bfr.readLine(); } catch (IOException ioe) { ioe.printStackTrace(); return; }
System.out.println(); char[] op = new char[opt.length()]; // arrayets stoerrelse er afgjort af strengens laengde for (int i = 0; i < opt.length(); i++) //204 { switch (opt.charAt(i)) { default : break; case \'+\' : case \'-\' : case \'*\' : case \'/\' : op[i] = opt.charAt(i); // laegger operator ind i char-array } } for (int i = 0; i < op.length; i++) System.out.println(op[i]); }
Joern h-> Den skriver kun operatoren ud, ikke hele formlen, og jeg mener ikke jeg har tastet forkert ind. (Udskriver nogle blanktegn på hver sin linje og dernæst enten +,-,* osv
Både tjull og backupmand, har fejl i deres for-løkke. array.length er ikke en metode, men en instans variable af array objektet. Der er derfor ingen paranteser efter length
min fejl. Jeg overså at opt var String, og backupmands kode er god nok. tjull\'s for-løkke er desværre stadigvæk forkert den skal enten rettes til for(int i=0;i<opt.length();i++)//opg er String og length() er en metode. el. for(int i=0;i<op.length;i++)//op er et Array og length er en instans variabel.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.