Permalänk
Medlem

Singelton Inom Java hjälp

Hej nu är det så att jag har råkat ut för en massa kompileringsfel i Java

Jag ska implementera singleton i en klass Logger, som tar emot en textsträng och skriver in textsträngen samt datum och tid i en textfil. Men när jag kompilerade programmet fick jag följande kompileringsfel:

ALDA_Inlupp_1_Uppgift_1.java:9: illegal start of expression
public String str;
^
ALDA_Inlupp_1_Uppgift_1.java:13: illegal start of expression
public static final String DATE_FORMAT_NOW = "yyyy-MM-dd HH:mm:ss";
^
ALDA_Inlupp_1_Uppgift_1.java:13: illegal start of expression
public static final String DATE_FORMAT_NOW = "yyyy-MM-dd HH:mm:ss";
^
ALDA_Inlupp_1_Uppgift_1.java:13: ';' expected
public static final String DATE_FORMAT_NOW = "yyyy-MM-dd HH:mm:ss";
^
ALDA_Inlupp_1_Uppgift_1.java:14: illegal start of expression
private static SingletonObject singleton;
^
ALDA_Inlupp_1_Uppgift_1.java:14: illegal start of expression
private static SingletonObject singleton;
^
ALDA_Inlupp_1_Uppgift_1.java:14: ';' expected
private static SingletonObject singleton;
^
ALDA_Inlupp_1_Uppgift_1.java:14: not a statement
private static SingletonObject singleton;
^
ALDA_Inlupp_1_Uppgift_1.java:16: illegal start of expression
private Logger() {
^
ALDA_Inlupp_1_Uppgift_1.java:16: ';' expected
private Logger() {
^
ALDA_Inlupp_1_Uppgift_1.java:26: illegal start of expression
public static String now() {
^
ALDA_Inlupp_1_Uppgift_1.java:26: illegal start of expression
public static String now() {
^
ALDA_Inlupp_1_Uppgift_1.java:26: ';' expected
public static String now() {
^
ALDA_Inlupp_1_Uppgift_1.java:26: ';' expected
public static String now() {
^
ALDA_Inlupp_1_Uppgift_1.java:32: illegal start of expression
public static Logger getSingletonObject(){
^
ALDA_Inlupp_1_Uppgift_1.java:32: illegal start of expression
public static Logger getSingletonObject(){
^
ALDA_Inlupp_1_Uppgift_1.java:32: ';' expected
public static Logger getSingletonObject(){
^
ALDA_Inlupp_1_Uppgift_1.java:32: ';' expected
public static Logger getSingletonObject(){
^

Totalt 18 st.

Följande är min kod:

import java.util.*; import java.io.*; import java.text.SimpleDateFormat; public class Logger{ public static void main(String[]args){ public String str; Scanner scan = new Scanner(System.in); Writer write = null; public static final String DATE_FORMAT_NOW = "yyyy-MM-dd HH:mm:ss"; private static SingletonObject singleton; private Logger() { System.out.print("Enter message: "); str = scan.nextLine(); File file = new File("singleton.txt"); writer = newBufferedWriter(new FileWriter(file)); writer.write(str); writer.write(now()); } public static String now() { Calendar cal = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW); return sdf.format(cal.getTime()); } public static Logger getSingletonObject(){ if (singleton == null) { singleton = new Logger(); } } return singleton; } }

Nu tror jag att det är fel någon annanstans än just där det blir kompileringsfel.

Hr någon någon idé?, det kanske är så att programmet är fel och inte gör det det är tänkt??

Tack för svar

Permalänk
Medlem

För det första undrar jag varför du har dina metoder inne i din main metod? Kommer inte ihåg om man kan ha det eller inte men fortfarande väldigt konstigt. Sen går du ju aldrig in i någon av de metoderna som du har skrivit. Tror det hela löser sig om du flyttar ut metoderna ur main metoden och gör metodanrop på rätt ställen.

EDIT: sen antar jag att dessa är klass variabler och borde då ligga utanför main metoden.

public static final String DATE_FORMAT_NOW = "yyyy-MM-dd HH:mm:ss"; private static SingletonObject singleton;

Kollat lite ytterligare och får intrycket att du inte har en aning om vad det är du gör, är helt omöjligt att förstå ditt program, du borde starta om från grunden och läsa igenom några kapitel om grundläggande java.

Permalänk
Medlem

Som kompilatorn säger så kan du inte påbörja metodvariabler med accesstilldelning (variabler deklarerade inuti metoder är bara åtkomliga inom den metoden.)
Sen har du metoder inuti din main-metod. Java tillåter inte inre metoder.
Slutligen kan variabeln singleton aldrig referera till en Logger() eftersom Logger inte är ett SingletonObject.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem

det har löst sig nu tack för hjälpen