[JAVA] *Nybörjare* - Hur låter man användaren tilldela värdet på en variabel?

Permalänk

[JAVA] *Nybörjare* - Hur låter man användaren tilldela värdet på en variabel?

Hej,

Jag går en sommarkurs i inledande java-programmering denna sommar. Det här med programmering är nytt för mig, men jag känner att det nog kommer lossna när jag väl fått koll på grunderna. Just nu har jag dock inte tillgång till kurslitteraturen till denna kurs, vilket innebär att jag söker runt på Internet för att ta till mig kunskap - vilket också går ganska bra. Dock har jag nu fastnat, på något som jag antar är otroligt grundläggande.

Jag skall enligt uppgiften utföra en beräkning där användaren matar in variablerna. Sedan beräknas resultatet med en formel som jag själv skrivit in i koden. Men jag har ingen aning om hur detta skall se ut?! Att själv mata in värdet på variablerna i koden förstår jag, och jag börjar även få grepp om hur man kan konvertera värdena mellan olika datatyper - men det har jag ju inte så mycket nytta av i detta exempel.

Jag har hittat en instruktion som beskriver metoden, men eftersom den inte ger någon exempelkod vet jag inte riktigt hur det ska se ut. Keyboard input

Kan någon visa ett enkelt program, som till exempel frågar användaren vad han heter - och därefter skriver ut "Hej, [namn]!". Det räcker för att jag ska kunna jobba vidare.

Tack på förhand.

Permalänk
Medlem

Föreslår att du använder scanner, men tar med grafiskt för skojs skull, lite mer att förstå i den grafiska varianten

System.out.println("Hej vad heter du?"); Scanner sc = new Scanner(System.in); String input = sc.next(); System.out.println("Hej " + input + "!"); Om du vill läsa heltal så skriver du sc.nextInt, osv för float, short, long.... glöm inte importera Scanner genom att skriva: import java.util.scanner överst funkar även grafiskt med: String input = JOptionPane.showInputDialog("Vad heter du?"); JOptionPane.showMessageDialog(this, "Hej" + input + "!", "Välkommen", JOptionPane.INFORMATION_MESSAGE); import javax.swing.JOptionPane; alternativt int input = Integer.parseInt(JOptionPane.showInputDialog("Säg en siffra!")); osäker på den här sista dock...

tillägg
Permalänk

Tack så mycket för ditt utförliga svar! Jag har skrivit in denna kod:

import java.util.scanner; public class Hej { public static void main(String [] args) { System.out.println("Hej vad heter du?"); Scanner sc = new Scanner(System.in); String input = sc.next(); System.out.println("Hej " + input + "!"); } }

men får 3 errors när jag försöker kompilera koden:

Hej.java:1: cannot find symbol symbol : class scanner location: package java.util import java.util.scanner; ^ Hej.java:10: cannot find symbol symbol : class Scanner location: class Hej Scanner sc = new Scanner(System.in); ^ Hej.java:10: cannot find symbol symbol : class Scanner location: class Hej Scanner sc = new Scanner(System.in); ^ 3 errors

Ser du om jag gjort något uppenbart fel?

Permalänk
Medlem

Felet betyder att programmet inte känner igen typen "Scanner". Det beror antingen på att typen inte finns eller att du inte inkluderat (import) det som behövs. I ditt fall är felet det senare, berorende på att det ska vara ett stort S i Scanner på import raden.

Permalänk
Medlem

import java.util.Scanner;

edit, för sent, kollade upp den i netbeans som fixar sånt automatisk om man tar fix imports eller liknande, ger ju också förslag när man skriver...

Permalänk

Tack så mycket för era svar. Med hjälp av dessa kan jag nu köra det enkla namn-programmet. Men jag får ingen ordning på när flera variabler skall användas samtidigt.

Såhär har jag gjort nu, men det resulterar i att kompilatorn klagar på variablerna.

Scanner scanner = new Scanner(System.in); System.out.print("Moment 1? "); String m01 = sc.nextInt(); System.out.print("Moment 2? "); String m02 = sc.nextInt(); System.out.print("Moment3? "); String m03 = sc.nextInt(); double kursbetyg = (0.5+(4.0*m10+1.8*m20+1.7*m30))/7.5;

m01-m03 väntar på ett numeriskt (heltals)värde mellan 1-5. Eller, egentligen väntar den på bokstaven A-E, men jag tror att jag vet hur jag ska omvandla ett int-värde till ett char-värde - så det behöver vi inte gå in på i denna tråd.

Hur går jag vidare med detta?

Permalänk
Medlem

du försöker tilldela heltal till sträng, troligen det som kompilatorn klagar på!
lagra dom i typen int ist, tex int m01...

Permalänk
Medlem

Antingen klagar kompilatorn redan på tilldelningen att du försöker tilldela en sträng ett heltalsvärde, eller så gör den en implicit konvertering vilket mycket väl kan vara ännu värre beroende på vad du vill ha. I vilket fall bör du fixa det, eftersom det i värsta(?) fall inte ens kompilerar, alternativt är högst språk- och typberoende, som är en dålig vana att lära sig.

Kompilatorn kommer dock absolut att klaga på beräkningen, där du bl.a. försöker multiplicera ett tal med en sträng. Vill du ha ett heltalsvärde som är lagrat som siffror i en sträng måste du använda Integer.parseInt(strängen). Alternativt bör du ändra typen på m01-m03 till int. Jag måste erkänna att jag inte riktigt förstår hur programmet är tänkt att fungera med avseende på inmatning och det, men jag misstänker att du är inne på lite fel spår.

Permalänk
Medlem
Skrivet av The_beast*:

Tack så mycket för era svar. Med hjälp av dessa kan jag nu köra det enkla namn-programmet. Men jag får ingen ordning på när flera variabler skall användas samtidigt.

Såhär har jag gjort nu, men det resulterar i att kompilatorn klagar på variablerna.

Scanner scanner = new Scanner(System.in); System.out.print("Moment 1? "); String m01 = sc.nextInt(); System.out.print("Moment 2? "); String m02 = sc.nextInt(); System.out.print("Moment3? "); String m03 = sc.nextInt(); double kursbetyg = (0.5+(4.0*m10+1.8*m20+1.7*m30))/7.5;

m01-m03 väntar på ett numeriskt (heltals)värde mellan 1-5. Eller, egentligen väntar den på bokstaven A-E, men jag tror att jag vet hur jag ska omvandla ett int-värde till ett char-värde - så det behöver vi inte gå in på i denna tråd.

Hur går jag vidare med detta?

till att börja med har du skrivit andra variabler i uträkningen än det du sparat som. m01 heter variablen, men det står m10 i uträkningen...

Tror du vill ha det såhär

Scanner scanner = new Scanner(System.in); System.out.print("Moment 1? "); int moment1 = sc.nextInt(); System.out.print("Moment 2? "); int moment2 = sc.nextInt(); System.out.print("Moment3? "); int moment3 = sc.nextInt(); double kursbetyg = (0.5+(4.0*moment1+1.8*moment2+1.7*moment3))/7.5; Svårt att veta om uträkningen är rätt eftersom vi inte vet förutsättningarna. Och om du vill skriva bokstäver får du ta char istället och skriva typ char moment1 = sc.nextChar() - 'A' +1 (tror detta funkar) om nu A är 1. kolla upp ASCII och char för mer info