I am working on an assignment for a class and we are to create a "Multi Greeter" program. Here are the Specs:
I am having trouble with the getGreetings()
method where I have to return a string array containing any greetings that may have been added to the greeter. I am getting this output currently:
The last line is the output in question. I need that to be an array of string values of the added greetings. I cannot use Arrays.toString()
since it needs to return a String[]
so I am officially stumped.
Here is my MultiGreeter class:
package edu.metrostate.ics240.p1.gaw886;
import java.util.Random;
public class MultiGreeter {
private static final int MAX_NUM_GREETINGS = 25;
private String defaultGreeting = "Hello";
private String defaultName = "World";
private String[] greetingList;
private int greetingCount;
private int maxGreets;
public MultiGreeter(){
greetingList = new String[MAX_NUM_GREETINGS];
greetingList[0] = defaultGreeting;
greetingCount = 1;
}
public MultiGreeter(int maxGreetings){
maxGreets = maxGreetings;
if (maxGreetings >= 0){
greetingList = new String[maxGreetings];
greetingList[0] = defaultGreeting;
greetingCount = 1;
}else{
throw new IllegalArgumentException(String.format("Negative value detected MultiGreeter(%s)", maxGreetings));
}
}
public int getMaxGreetings(){
return greetingList.length;
}
public int getNumGreetings(){
return greetingCount;
}
public Boolean addGreeting(String greeting){
if (greetingCount == maxGreets ) {
return false;
}else{
greetingList[greetingCount] = greeting;
greetingCount++;
return true;
}
}
public String[] getGreetings(){
String[] greetings = greetingList;
return greetings;
}
public String greet(String name){
int randomIdx = new Random().nextInt(greetingCount);
String randomGreeting = greetingList[randomIdx];
if (greetingCount == 1) {
return String.format("\"%s, %s!\"", defaultGreeting, name);
}else{
return String.format("\"%s, %s!\"", randomGreeting, name);
}
}
public String greet(){
int randomIdx = new Random().nextInt(greetingCount);
String randomGreeting = greetingList[randomIdx];
if (greetingCount == 1) {
return String.format("\"%s, %s\"", defaultGreeting, defaultName);
}else{
return String.format("\"%s, %s\"", randomGreeting, defaultName);
}
}
}
Here is my MultiGreeter test class:
package edu.metrostate.ics240.ex1.tests.gaw886;
import edu.metrostate.ics240.p1.gaw886.MultiGreeter;
public class MultiGreeterTester {
public static void main(String[] args) {
MultiGreeter mg = new MultiGreeter();
MultiGreeter mg1 = new MultiGreeter(10);
mg.addGreeting("Bonjour");
mg.addGreeting("Vilkommen");
mg1.addGreeting("Namaste");
mg1.addGreeting("Hello");
mg1.addGreeting("Hello1");
mg1.addGreeting("Hello2");
mg1.addGreeting("Hello3");
System.out.println(mg.getMaxGreetings());
System.out.println(mg.getNumGreetings());
System.out.println(mg.greet());
System.out.println("\n");
System.out.println(mg1.getMaxGreetings());
System.out.println(mg1.getNumGreetings());
System.out.println(mg1.greet());
System.out.println(mg1.greet("Gabriel"));
System.out.println(mg1.getGreetings());
}
}
Thanks in advance for any help!