behöver hjälp med programmeringsuppgifter(två inte så stora)
Hej jag är elev som läser i gymnasiet
Fredag är kursens slut och han ska sätta betyg, därför innan fredag jag måste göra om och lämna in uppgifterna som jag fick F på betyg.
Några jag har gjort, men finns några som jag förstår inte. Kan ni hjälpa mig?
Uppgift1.
Genomgången idag behandlade skapandet av en kortbunt. Vid utskriften så var en 1 färgen klöver. Modifiera utskriften så att den blir på formen Klöver 5. Byt alltså ut 1-4 mot Klöver, Ruter, Hjärter och Spader.
Den är kod som vi gjorde i klassen tillsammans
package Kapitel14;
class Kort{
public static final int KLÖVER =1;
public static final int RUTER =2;
public static final int HJÄRTER =3;
public static final int SPADER =4;
//INSTANSVARIABLER
int färg, valör;
}
//klassen kortbunt används för att skapa 52st kort
class kortbunt{
Kort [] bunten = new Kort[52];
int antal;
}
public class Kapitel14_1 {
public static void main(String[] args) {
kortbunt kb= new kortbunt();
int f, i = 0, val;
for(f = Kort.KLÖVER; f<=Kort.SPADER; f++){
for (val=1; val <= 13; val++, i++){
kb.bunten[i] = new Kort();
kb.bunten[i].färg = f;
kb.bunten[i].valör = val;
kb.antal++;
}
}
System.out.println(kb.bunten[1 + (int)(Math.random() * 52)].färg + " " );
System.out.println(kb.bunten[1 + (int)(Math.random() * 52)].valör + " " );
}
}
OCh den är kod som jag gjorde fel
package Kapitel14;
class Kort2{
public static final int KLÖVER =5;
public static final int RUTER =4;
public static final int HJÄRTER =3;
public static final int SPADER =2;
//INSTANSVARIABLER
int färg, valör;
}
//klassen kortbunt används för att skapa 52st kort
class kortbunt2{
Kort [] bunten = new Kort[52];
int antal;
}
public class Kapitel14_inlämningsuppgift {
public static void main(String[] args) {
kortbunt2 kb= new kortbunt2();
int f, i = 0, val;
for(f = Kort.KLÖVER; f<=Kort.SPADER; f++){
for (val=1; val <= 13; val++, i++){
kb.bunten[i] = new Kort();
kb.bunten[i].färg = f;
kb.bunten[i].valör = val;
kb.antal++;
}
}
System.out.println(kb.bunten[1 + (int)(Math.random() * 52)].färg + " " );
System.out.println(kb.bunten[1 + (int)(Math.random() * 52)].valör + " " );
}
}
Du kan se att där finns nästan inget skillnad och det är eftersom jag har inte riktigt förstått uppgiften. Min lärare har kommenterat att jag använde felaktig klass kortbunt, när jag tänkte att där är fel med klass Kort2. Hur ska man göra med kortbunt?
Uppgift 2.
På sid 366 i boken, finns ex CirkelProg2 som beräknar arean och omkretsen av en cirkel.
Uppgiften blir nu att modifiera programmet så att arean och omkretsen av en ellips beräknas. Det räcker med en approximativ formel för att beräkna omkretsen av ellipsen.
Uppgift i boken:
import javax.swing.*;
import java.util.*;
public class CirkelProg{
public static void main (String[] args) {
Cirkel c1 = new Cirkel(),
c2 = new Cirkel();
String s = JOptionPane.showInputDialog ("Den första cirkelns radie?");
Scanner sc = new Scanner(s);
c1.sättRadie(sc.nextDouble());
s = JOptionPane.showInputDialog ("Den andra cirkelns radie?");
sc = new Scanner (s);
c2.sättRadie(sc.nextDouble());
JOptionPane.showMessageDialog(null, String.format("Den första cirkeln har arean %.3f" + "och omkretsen %.3\n" +
"Den andra cirkeln har arean %.3f " + " och omkretsen %.3\f", c1.area(), c1.omkr(),
c2.area(), c2.omkr()));
Koden som jag gjorde:
package kapitel15uppgift;
import javax.swing.*;
import java.util.*;
public class Kapitel15_hemuppgift2 {
@SuppressWarnings("MalformedFormatString")
public static void main(String[] arg) {
Kapitel15_hemuppgift e1 = new Kapitel15_hemuppgift();
e1.area();
e1.omkrets();
String s = JOptionPane.showInputDialog("Sida1?");
double x = Double.parseDouble(s);
String s1 = JOptionPane.showInputDialog("Sida2?");
double y = Double.parseDouble(s1);
e1.sättRadie(x, y);
JOptionPane.showMessageDialog(null, String.format("Ellipsens area är %.3f" +" och omkretsen är %3.f\n" + "Den andra ellipsens area är %.3f" + "och omkretsen är %3.f", e1.area(), e1.omkrets()));
}
class Kapitel15_hemuppgift {
double a, b;
double sida1, sida2;
double omkrets, area;
public void sättRadie (double x, double y){
if(x>0)
sida1 = x;
else
throw new IllegalArgumentException("Talet är negativ");
if(y>0)
sida2= y;
else
throw new IllegalArgumentException("Talet är negativ");
}
public double area() {
return Math.PI * sida1 * sida2;
}
public double omkrets () {
return Math.PI*Math.sqrt(2*Math.pow(a, 2)+2*Math.pow(b, 2));
}
}
Det visar felutskrift
Exception in thread "main" java.util.UnknownFormatConversionException: Conversion = '3'
at java.util.Formatter.checkText(Formatter.java:2579)
at java.util.Formatter.parse(Formatter.java:2555)
at java.util.Formatter.format(Formatter.java:2501)
at java.util.Formatter.format(Formatter.java:2455)
at java.lang.String.format(String.java:2940)
at kapitel15uppgift.Kapitel15_hemuppgift2.main(Kapitel15_hemuppgift2.java:41)
C:\Users\(Mitt namn)\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 4 seconds)
och lärare kommenterade :
e1.area(), e1.omkrets()
Inga sådana metoder finns i objekten e1 och e2
Men varför är det så om jag har redan räknat area och omkrets??