Computer Wiz99 Ответов: 3

Как устранить ошибку синтаксического маркера в классе, чтобы он правильно компилировался?


У меня есть проект JAVA, в котором есть код для запуска, но нет кода в двух классах, которые он вам дает. Я новичок в JAVA и действительно нуждаюсь в помощи в этом вопросе. Я добавил свой код в класс сокровищ и теперь получаю: Синтаксическая ошибка на токены, удалить эти маркеры и синтаксическая ошибка, вставьте ";" для завершения BlockStatements Почему я получаю эти ошибки? Что я пропустил?


Вот уже Java код:
package mythical.controllers;

import java.text.NumberFormat;

import mythical.model.Treasure;

/**
 * This class is used to informally test the Treasure class.
 * 	NOTE: This class won't compile until the Treasure class
 * 	has been completed correctly
 * 
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * ~~ DO NOT MODIFY THE CODE INSIDE TreasureDemo ~~
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * 
 * @author	Kwesi Hopkins
 * @version	09/12/2016
 *
 */
public class TreasureDemo {
	private Treasure largeTreasure;
	private Treasure smallTreasure;
	private NumberFormat currencyFormatter;	
	
	/**
	 * Creates a new TreasureDemo object with 2 Treasures
	 */
	public TreasureDemo() {
		this.largeTreasure = new Treasure(105);
		this.smallTreasure = new Treasure(10);
		this.currencyFormatter = NumberFormat.getCurrencyInstance();
	}
	
	/**
	 * This method will print information about each Treasure,
	 * 	have each Treasure be claimed, and print information 
	 * 	about each (newly found) Treasure
	 */
	public void testTreasure() {
		this.describeTreasure2("New large treasure", this.largeTreasure, 105, 25452.0);
		
		this.describeTreasure2("New small treasure", this.smallTreasure, 10, 2424.0);
		
		System.out.println();
		System.out.println("~~~~ The treasures get found ~~~~");
		this.largeTreasure.getsFound();
		this.smallTreasure.getsFound();
		
		System.out.println();
		this.describeTreasure2("Found large treasure", this.largeTreasure, 0, 0.0);
		
		this.describeTreasure2("Found small treasure", this.smallTreasure, 0, 0.0);
		System.out.println();
	}
	
	/**
	 * Helper method that accepts a message and the expected value
	 * 
	 * @param	message			The message to be displayed
	 * @param	theTreasure		The treasure to be described
	 * @param	expectedWeight	The treasure's expected weight
	 * @param	expectedValue	The treasure's expected value
	 */
	public void describeTreasure2(String message, Treasure theTreasure, 
			int expectedWeight, double expectedValue) {
		System.out.println(message);
		System.out.println("\tExpected weight: \t" + expectedWeight);
		System.out.println("\tActual weight: \t\t" + theTreasure.getWeight());	
		
		System.out.println("\tExpected value: \t" + this.currencyFormatter.format(expectedValue));
		System.out.println("\tActual value: \t\t" + this.currencyFormatter.format(theTreasure.getValue()));
		System.out.println();
	}
}


Вот этот класс:

package mythical.model;

public class Treasure {
	
		private int theTreasure;
		    private int largeTreasure;
		    private int smallTreasure;
		
		 public Treasure() {
		        this.theTreasure = 0;
		        this.largeTreasure = 0;
		        this.smallTreasure = 0;
		        
		        
		    }
		    
		    public Treasure(int largeTreasure){
		        this.largeTreasure = largeTreasure;
		        
		    }
		    
		    public void getLargeTreasure(){
		        this.largeTreasure = this.largeTreasure + 105;
		    }
		    
		    public void getSmallTreasure(){
		        this.smallTreasure = this.smallTreasure + 10;
		    }
		        
		    public int getWeight(){
		        return this.largeTreasure;
		    }
		    
		    public double getValue(){
		        return this.largeTreasure * 242.40;
		    }
		                
		    public int getsFound(){
		        return this.largeTreasure;

		    }

		    public int expectedWeight(){
		        return this.largeTreasure + 105;
		    }
		    
		}
	}
}


Пожалуйста, помогите мне.

Что я уже пробовал:

Я пробовал разные способы запуска конструктора, но безуспешно. Новичок в JAVA.

[no name]

Пожалуйста, не ждите, что люди будут пытаться учить вас Java, как они учили вас C# на протяжении многих лет и вопрос за вопросом. Как вам уже неоднократно говорили, возьмите себе книгу по программированию на java и проработайте ее. Изучите материал. Тогда тебе не придется возвращаться сюда снова и снова и задавать одни и те же вопросы снова и снова.

3 Ответов

Рейтинг:
4

Computer Wiz99

Я выяснил, что я сделал неправильно в своем коде. Вот исправленный код.

public class Treasure {
	private int theTreasure;
    private int largeTreasure;
    private int smallTreasure;

public Treasure(){
    this.theTreasure = 0;
    this.largeTreasure = 0;
    this.smallTreasure = 0;
}
public Treasure(int largeTreasure){
    this.largeTreasure = largeTreasure;
}
public void getLargeTreasure(){
    this.largeTreasure = this.largeTreasure + 105;
}
public void getSmallTreasure(){
    this.smallTreasure = this.smallTreasure + 10;
}
public int getWeight(){
    return this.largeTreasure;
}
public double getValue(){
    return this.largeTreasure * 242.40;
}
public int getsFound(){
    return this.largeTreasure;
}
public int expectedWeight(){
    return this.largeTreasure + 105;
}

}


Richard MacCutchan

Это не очень хороший дизайн. Добытчики имущества (например, getLargeTreasure) не должны изменять значения в созданном классе. Они должны были это сделать вернуть текущая стоимость объекта недвижимости. Используйте сеттеры для обновления значений. Видеть Учебники По Java[^] для некоторых полезных учебных материалов.

Maciej Los

Согласитесь!

Computer Wiz99

Да, я мог бы использовать это, но не могу. Нельзя использовать то, что мы не прошли. Может быть, это и не очень хороший дизайн, но я стараюсь.

Richard MacCutchan

Ну, если это то, чему вас учат, то вам нужно найти другую школу и быстро.

Рейтинг:
2
Рейтинг:
2

OriginalGriff

Мы не делаем домашнее задание: оно задано не просто так. Она существует для того, чтобы вы думали о том, что вам сказали, и пытались понять это. Он также существует для того, чтобы ваш наставник мог определить области, в которых вы слабы, и сосредоточить больше внимания на корректирующих действиях.

Поэтому начните с перечитывания ваших заметок по курсу и / или книги до сих пор. Информация, в которой вы нуждаетесь, будет там - и вы научитесь этому основному материалу намного лучше, работая над ним для себя, чем получая "решение" без контекста.
Попробуйте сами, возможно, вы обнаружите, что это не так сложно, как вы думаете!

Если вы столкнетесь с конкретной проблемой, то, пожалуйста, спросите об этом, и мы сделаем все возможное, чтобы помочь. Но мы не собираемся делать все это для вас!