O compilador está mostrando "não pode encontrar o símbolo" mensagem de erro ao tentar classe SteppingStone5_Recipe referência em outra classe dentro do mesmo pacote. Eu pensei que o problema era porque as classes tinham pacotes diferentes, mas uma vez eu renomeado os pacotes usando a ferramenta compilador esta solução não funcionou.
Esta é a SteppingStone6_RecipeBox Classe:
package SteppingStones;
import java.util.ArrayList;
import java.util.Scanner;
public class SteppingStone6_RecipeBox {
/**
* @param args the command line arguments
*/
private ArrayList<SteppingStone5_Recipe> listOfRecipes;
/**
* @param args the command line arguments
*/
/**
* @return the listOfRecipes
*/
public ArrayList<SteppingStone5_Recipe> getListOfRecipes() {
return listOfRecipes;
}
/**
* @param listOfRecipes the listOfRecipes to set
*/
public void setListOfRecipes(ArrayList<SteppingStone5_Recipe> listOfRecipes) {
this.listOfRecipes = listOfRecipes;
}
public SteppingStone6_RecipeBox() {
this.listOfRecipes = new ArrayList();
}
public SteppingStone6_RecipeBox(ArrayList<SteppingStone5_Recipe> listOfRecipes) {
this.listOfRecipes = listOfRecipes;
}
public void printAllRecipeDetails(String selectedRecipeName) {
for (int i = 0; i < listOfRecipes.size(); i++) {
if (!listOfRecipes.get(i).getRecipeName().equals(selectedRecipeName)) {
} else {
listOfRecipes.get(i).printRecipe();
}
}
}
public void printAllRecipeNames() {
for (SteppingStone5_Recipe currentRecipe : listOfRecipes) {
System.out.println(currentRecipe.getRecipeName());
}
}
public void addNewRecipe() {
//
//Note: the next line only functions once the SteppingStone5_Recipe
//class "main" method has been replaced with:
// public SteppingStone5_Recipe addNewRecipe()
//
//and the method is set to return new Recipe instead of printing it out
//
listOfRecipes.add(new SteppingStone5_Recipe().createNewRecipe());
}
public static void main(String[] args) {
SteppingStone6_RecipeBox myRecipeBox = new SteppingStone6_RecipeBox();
Scanner menuScnr = new Scanner(System.in);
System.out.println("Menu\n" + "1. Add Recipe\n" + "2. Print All Recipe Details\n" + "3. Print All
Recipe Names\n" + "\nPlease select a menu item:");
while (menuScnr.hasNextInt() || menuScnr.hasNextLine()) {
System.out.println("Menu\n" + "1. Add Recipe\n" + "2. Print All Recipe Details\n" + "3. Print
All Recipe Names\n" + "\nPlease select a menu item:");
int input = menuScnr.nextInt();
if (input == 1) {
myRecipeBox.addNewRecipe();
} else if (input == 2) {
System.out.println("Which recipe?\n");
String selectedRecipeName = menuScnr.next();
myRecipeBox.printAllRecipeDetails(selectedRecipeName);
} else if (input == 3) {
for (int j = 0; j < myRecipeBox.listOfRecipes.size(); j++) {
System.out.println((j + 1) + ": " +
myRecipeBox.listOfRecipes.getRecipeName().get(j));
}
} else {
System.out.println("\nMenu\n" + "1. Add Recipe\n" + "2. Print Recipe\n" + "3. Adjust
Recipe Servings\n" + "\nPlease select a menu item:");
}
System.out.println("Menu\n" + "1. Add Recipe\n" + "2. Print All Recipe Details\n" + "3. Print
All Recipe Names\n" + "\nPlease select a menu item:");
}
}
}
Esta é a classe SteppingStone5_Recipe
package SteppingStones;
import java.util.Scanner;
import java.util.ArrayList;
public class SteppingStone5_Recipe {
private String recipeName;
private int servings;
private ArrayList<String> recipeIngredients;
private double totalRecipeCalories;
//accessor/getter for recipe name
public String getRecipeName() {
return recipeName;
}
//mutator/setter for recipe name
public void setRecipeName(String recipeName){
this.recipeName = recipeName;
}
//accessor for servings
public int getServings(){
return servings;
}
//mutator for servings
public void setServings(int servings){
this.servings = servings;
}
//accessor for recipe ingredients
public ArrayList<String> getRecipeIngredients(){
return recipeIngredients;
//mutator for recipe ingredients
}
public void setRecipeIngredients(ArrayList<String> recipeIngredients){
this.recipeIngredients = recipeIngredients;
}
//accessor for the total of recipe calories
public double getTotalRecipeCalories(){
return totalRecipeCalories;
}
//mutator for Total of recipe calories
public void setTotalRecipeCalories(double totalRecipeCalories){
this.totalRecipeCalories = totalRecipeCalories;
}
public SteppingStone5_Recipe() {
this.recipeName = "";
this.servings = 0;
this.recipeIngredients = new ArrayList<>();
this.totalRecipeCalories = 0;
}
public SteppingStone5_Recipe(String recipeName, int servings, ArrayList<String> recipeIngredients,
double totalRecipeCalories) {
this.recipeName = recipeName;
this.servings = servings;
this. recipeIngredients = recipeIngredients;
this.totalRecipeCalories = totalRecipeCalories;
}
public void printRecipe() { //method to print all instances of the recipe
double singleServingCalories = totalRecipeCalories / servings;
System.out.println("Recipe: " + getRecipeName());
System.out.println("Serves: " + getServings());
System.out.println("Ingredients:");
for(int i = 0; i < recipeIngredients.size(); ++i) {
System.out.println(recipeIngredients.get(i));
}
System.out.println("Total Calories per serving: " + singleServingCalories);
}
public static void main(String[] args) {
double totalRecipeCalories = 0;
ArrayList<String> recipeIngredients = new ArrayList();
boolean addMoreIngredients = true;
Scanner scnr = new Scanner(System.in);
System.out.println("Please enter the recipe name: ");
String recipeName = scnr.nextLine();
System.out.println("How many servings: ");
int servings = scnr.nextInt();
do {//Loop to add new ingredients until user inputs end
System.out.println("Please enter the ingredient name" +
" or type end if you are finished entering ingredients: ");
String ingredientName = scnr.next();
if (ingredientName.toLowerCase().equals("end")) {
addMoreIngredients = false;
} else {
//Add the ingredient name to recipeIngredients
recipeIngredients.add(ingredientName);
System.out.println("Please enter the ingredient amount: ");
float ingredientAmount = scnr.nextFloat();
System.out.println("Please enter the ingredient Calories: ");
int ingredientCalories = scnr.nextInt();
//Add the total Calories from this ingredient
totalRecipeCalories = ingredientCalories * ingredientAmount;
}
} while (addMoreIngredients) ;
//create new object recipe1 and use method printRecipe to display all properties of recipe
SteppingStone5_Recipe recipe1 = new SteppingStone5_Recipe(recipeName,
servings, recipeIngredients, totalRecipeCalories);
recipe1.printRecipe();
}
}
Estou completamente perdido sobre o que está faltando ou o que estou fazendo de errado.
Eu não sou capaz de reproduzir o erro que você mencionou, mas durante a execução de código que eu encontrei algum erro tempo de compilação que são detalhados abaixo-
A) Em SteppingStone6_RecipeBox
acrescentando novo método receita no addNewRecipe
incapaz de encontrar createNewRecipe
em sala de aulaSteppingStone5_Recipe
//TODO Method not found
listOfRecipes.add(new SteppingStone5_Recipe().createNewRecipe());
B) Em segundo lugar erro que encontrei no principal método de SteppingStone6_RecipeBox
onde você está recebendo receita no caminho errado.
for (int j = 0; j < myRecipeBox.listOfRecipes.size(); j++) {
//TODO Changes Done..Kandy
//System.out.println((j + 1) + ": " + myRecipeBox.listOfRecipes.getRecipeName().get(j));
System.out.println((j + 1) + ": " + myRecipeBox.listOfRecipes.get(j).getRecipeName()); // correct code
}
Uma vez eu comentei ponto A e após a correção do ponto B quando eu corro programar suas pistas.