Solved

FizzBuzz challenge

Posted on 2016-08-14
9
71 Views
Last Modified: 2016-08-16
Hi,

I am working on below challenge

http://codingbat.com/prob/p153059

My psuedo code of the logical approach is
0. construct array within int fromm start till end
1. loop throguh given array
2. find given element is multiple of 3 if yes replace by fizz
3.  find given element is multiple of 5 if yes replace by Buzz
4. return modified array



I wrote my code as below

public String[] fizzBuzz(int start, int end) {
  int [] arr=null;
  for(int i=start;i<(end-1);i++){
    arr[i]=i;
  
  
  if(arr[i]%3==0){
    arr[i]="Fizz";
  }
 else if(arr[i]%5==0){
    arr[i]="Buzz";
  }
  
  }
  return arr;
}

Open in new window




I am not passing all tests

How to improve my design, approach, code? please advise
0
Comment
Question by:gudii9
  • 6
  • 2
9 Comments
 
LVL 100

Expert Comment

by:mlmcc
Comment Utility
Go reread the challenge.  You are missing at least 2 key parts.

mlmcc
0
 
LVL 7

Author Comment

by:gudii9
Comment Utility
else if (arr[i]%5==0&&(arr[i]%5==0){
    arr[i]="FizzBuzz";
  }

Open in new window

i see above condition
0
 
LVL 7

Author Comment

by:gudii9
Comment Utility
public class FizzBuzzChallenge {
	public static void main(String[] args) {
		System.out.println("value is-->"+fizzBuzz(1, 6));
	}

	public static String[] fizzBuzz(int start, int end) {
		  String [] arr=null;
		  for(int i=start;i<(end-1);i++){
		    arr[i]=String.valueOf(i);
		  
		  
		  if(  (Integer.parseInt(arr[i]) ) %3==0){
		    arr[i]="Fizz";
		  }
		 else if((Integer.parseInt(arr[i]) )%5==0){
		    arr[i]="Buzz";
		  }
		 else if( (Integer.parseInt(arr[i]) )%3==0  && (Integer.parseInt(arr[i]) )%5==0){
			    arr[i]="FizzBuzz";
			  }
		  }
		  return arr;
		}

}

Open in new window


i am getting NPE as below


Exception in thread "main" java.lang.NullPointerException
      at FizzBuzzChallenge.fizzBuzz(FizzBuzzChallenge.java:10)
      at FizzBuzzChallenge.main(FizzBuzzChallenge.java:4)


public String[] fizzBuzz(int start, int end) {
		  String [] arr=null;
		  for(int i=start;i<(end-1);i++){
		    arr[i]=String.valueOf(i);
		  
		  
		  if(  (Integer.parseInt(arr[i]) ) %3==0){
		    arr[i]="Fizz";
		  }
		 else if((Integer.parseInt(arr[i]) )%5==0){
		    arr[i]="Buzz";
		  }
		 else if( (Integer.parseInt(arr[i]) )%3==0  && (Integer.parseInt(arr[i]) )%5==0){
			    arr[i]="FizzBuzz";
			  }
		  }
		  return arr;
		}

Open in new window


Expected      Run            
fizzBuzz(1, 6) → ["1", "2", "Fizz", "4", "Buzz"]      Exception:java.lang.NullPointerException (line number:4)      X      
fizzBuzz(1, 8) → ["1", "2", "Fizz", "4", "Buzz", "Fizz", "7"]      Exception:java.lang.NullPointerException (line number:4)      X      
fizzBuzz(1, 11) → ["1", "2", "Fizz", "4", "Buzz", "Fizz", "7", "8", "Fizz", "Buzz"]      Exception:java.lang.NullPointerException (line number:4)      X      
fizzBuzz(1, 16) → ["1", "2", "Fizz", "4", "Buzz", "Fizz", "7", "8", "Fizz", "Buzz", "11", "Fizz", "13", "14", "FizzBuzz"]      Exception:java.lang.NullPointerException (line number:4)      X      
fizzBuzz(1, 4) → ["1", "2", "Fizz"]      Exception:java.lang.NullPointerException (line number:4)      X      
fizzBuzz(1, 2) → ["1"]      null      X      
fizzBuzz(50, 56) → ["Buzz", "Fizz", "52", "53", "Fizz", "Buzz"]      Exception:java.lang.NullPointerException (line number:4)      X      
fizzBuzz(15, 17) → ["FizzBuzz", "16"]      Exception:java.lang.NullPointerException (line number:4)      X      
fizzBuzz(30, 36) → ["FizzBuzz", "31", "32", "Fizz", "34", "Buzz"]      Exception:java.lang.NullPointerException (line number:4)      X      
fizzBuzz(1000, 1006) → ["Buzz", "1001", "Fizz", "1003", "1004", "FizzBuzz"]      Exception:java.lang.NullPointerException (line number:4)      X      
fizzBuzz(99, 102) → ["Fizz", "Buzz", "101"]      Exception:java.lang.NullPointerException (line number:4)      X      
fizzBuzz(14, 20) → ["14", "FizzBuzz", "16", "17", "Fizz", "19"]      Exception:java.lang.NullPointerException (line number:4)      X      
other tests

How to resolve this issue?
0
 
LVL 7

Author Comment

by:gudii9
Comment Utility
public String[] fizzBuzz(int start, int end) {
		  String [] arr=new String[(end-start)];
		  for(int i=start;i<(end-1);i++){
		    arr[i]=String.valueOf(i);
		  
		  
		  if(  (Integer.parseInt(arr[i]) ) %3==0){
		    arr[i]="Fizz";
		  }
		 else if((Integer.parseInt(arr[i]) )%5==0){
		    arr[i]="Buzz";
		  }
		 else if( (Integer.parseInt(arr[i]) )%3==0  && (Integer.parseInt(arr[i]) )%5==0){
			    arr[i]="FizzBuzz";
			  }
		  }
		  return arr;
		}

Open in new window


above fails below tests
Expected      Run            
fizzBuzz(1, 6) → ["1", "2", "Fizz", "4", "Buzz"]      [null, "1", "2", "Fizz", "4"]      X      
fizzBuzz(1, 8) → ["1", "2", "Fizz", "4", "Buzz", "Fizz", "7"]      [null, "1", "2", "Fizz", "4", "Buzz", "Fizz"]      X      
fizzBuzz(1, 11) → ["1", "2", "Fizz", "4", "Buzz", "Fizz", "7", "8", "Fizz", "Buzz"]      [null, "1", "2", "Fizz", "4", "Buzz", "Fizz", "7", "8", "Fizz"]      X      
fizzBuzz(1, 16) → ["1", "2", "Fizz", "4", "Buzz", "Fizz", "7", "8", "Fizz", "Buzz", "11", "Fizz", "13", "14", "FizzBuzz"]      [null, "1", "2", "Fizz", "4", "Buzz", "Fizz", "7", "8", "Fizz", "Buzz", "11", "Fizz", "13", "14"]      X      
fizzBuzz(1, 4) → ["1", "2", "Fizz"]      [null, "1", "2"]      X      
fizzBuzz(1, 2) → ["1"]      [null]      X      
fizzBuzz(50, 56) → ["Buzz", "Fizz", "52", "53", "Fizz", "Buzz"]      Exception:java.lang.ArrayIndexOutOfBoundsException: 50 (line number:4)      X      
fizzBuzz(15, 17) → ["FizzBuzz", "16"]      Exception:java.lang.ArrayIndexOutOfBoundsException: 15 (line number:4)      X      
fizzBuzz(30, 36) → ["FizzBuzz", "31", "32", "Fizz", "34", "Buzz"]      Exception:java.lang.ArrayIndexOutOfBoundsException: 30 (line number:4)      X      
fizzBuzz(1000, 1006) → ["Buzz", "1001", "Fizz", "1003", "1004", "FizzBuzz"]      Exception:java.lang.ArrayIndexOutOfBoundsException: 1000 (line number:4)      X      
fizzBuzz(99, 102) → ["Fizz", "Buzz", "101"]      Exception:java.lang.ArrayIndexOutOfBoundsException: 99 (line number:4)      X      
fizzBuzz(14, 20) → ["14", "FizzBuzz", "16", "17", "Fizz", "19"]      Exception:java.lang.ArrayIndexOutOfBoundsException: 14 (line number:4)      X      
other tests
X      
Your progress graph for this problem
import java.util.Arrays;

public class FizzBuzzChallenge {
	public static void main(String[] args) {
		System.out.println("value is-->"+Arrays.toString(fizzBuzz(1, 6)));
	}

	public static String[] fizzBuzz(int start, int end) {
		  String [] arr=new String[(end-start)];
		  for(int i=start;i<(end-1);i++){
		    arr[i]=String.valueOf(i);
		  
		  
		  if(  (Integer.parseInt(arr[i]) ) %3==0){
		    arr[i]="Fizz";
		  }
		 else if((Integer.parseInt(arr[i]) )%5==0){
		    arr[i]="Buzz";
		  }
		 else if( (Integer.parseInt(arr[i]) )%3==0  && (Integer.parseInt(arr[i]) )%5==0){
			    arr[i]="FizzBuzz";
			  }
		  }
		  return arr;
		}

}

Open in new window

value is-->[null, 1, 2, Fizz, 4]
0
Enabling OSINT in Activity Based Intelligence

Activity based intelligence (ABI) requires access to all available sources of data. Recorded Future allows analysts to observe structured data on the open, deep, and dark web.

 
LVL 100

Assisted Solution

by:mlmcc
mlmcc earned 250 total points
Comment Utility
I am not a Java programmer but in some languages arrays are indexed from 0.
If Java is such you need to account for it.

WHen you run for 50 to 56 the array is not indexed with 50, 51, etc.  You have to adjust the index or the values entered.

mlmcc
0
 
LVL 20

Accepted Solution

by:
Amitkumar Panchal earned 250 total points
Comment Utility
I found couple of logical issues and corrected the code with comments.

public String[] fizzBuzz(int start, int end) {
		  String [] arr=new String[(end-start)];
		  
		  for(int n=start;n<end;n++){
		    int i = n-start; // Calculation of number was missing
		    arr[i]=String.valueOf(start+i);
		  
		  // Corrected the condition order
    		 if( (Integer.parseInt(arr[i]) )%3==0  && (Integer.parseInt(arr[i]) )%5==0){
    			    arr[i]="FizzBuzz";
    		 } else if((Integer.parseInt(arr[i]) )%5==0){
    		    arr[i]="Buzz";
    		 } else if(  (Integer.parseInt(arr[i]) ) %3==0){
    		    arr[i]="Fizz";
    		 }
		  }
		  return arr;
}

Open in new window

0
 
LVL 7

Author Comment

by:gudii9
Comment Utility
 int i = n-start; // Calculation of number was missing

why we need above step? which number?
0
 
LVL 7

Author Comment

by:gudii9
Comment Utility
public String[] fizzBuzz(int start, int end) {
		int len =end-start;
		  String [] arr=new String[(len)];
		  for(int k=start;k<(end);k++){
		    arr[k-1]=String.valueOf(k);
		  }
		  for(int i=0;i<(len);i++){ 
		     if( (Integer.parseInt(arr[i]) )%3==0  && (Integer.parseInt(arr[i]) )%5==0){
			    arr[i]="FizzBuzz";
			  }
		 else if(  (Integer.parseInt(arr[i]) ) %3==0){
		    arr[i]="Fizz";
		  }
		 else if((Integer.parseInt(arr[i]) )%5==0){
		    arr[i]="Buzz";
		  }
		  }
		  return arr;
		}

Open in new window


above fails bottom tests which do not start with 1
Expected      Run            
fizzBuzz(1, 6) → ["1", "2", "Fizz", "4", "Buzz"]      ["1", "2", "Fizz", "4", "Buzz"]      OK      
fizzBuzz(1, 8) → ["1", "2", "Fizz", "4", "Buzz", "Fizz", "7"]      ["1", "2", "Fizz", "4", "Buzz", "Fizz", "7"]      OK      
fizzBuzz(1, 11) → ["1", "2", "Fizz", "4", "Buzz", "Fizz", "7", "8", "Fizz", "Buzz"]      ["1", "2", "Fizz", "4", "Buzz", "Fizz", "7", "8", "Fizz", "Buzz"]      OK      
fizzBuzz(1, 16) → ["1", "2", "Fizz", "4", "Buzz", "Fizz", "7", "8", "Fizz", "Buzz", "11", "Fizz", "13", "14", "FizzBuzz"]      ["1", "2", "Fizz", "4", "Buzz", "Fizz", "7", "8", "Fizz", "Buzz", "11", "Fizz", "13", "14", "FizzBuzz"]      OK      
fizzBuzz(1, 4) → ["1", "2", "Fizz"]      ["1", "2", "Fizz"]      OK      
fizzBuzz(1, 2) → ["1"]      ["1"]      OK      
fizzBuzz(50, 56) → ["Buzz", "Fizz", "52", "53", "Fizz", "Buzz"]      Exception:java.lang.ArrayIndexOutOfBoundsException: 49 (line number:5)      X      
fizzBuzz(15, 17) → ["FizzBuzz", "16"]      Exception:java.lang.ArrayIndexOutOfBoundsException: 14 (line number:5)      X      
fizzBuzz(30, 36) → ["FizzBuzz", "31", "32", "Fizz", "34", "Buzz"]      Exception:java.lang.ArrayIndexOutOfBoundsException: 29 (line number:5)      X      
fizzBuzz(1000, 1006) → ["Buzz", "1001", "Fizz", "1003", "1004", "FizzBuzz"]      Exception:java.lang.ArrayIndexOutOfBoundsException: 999 (line number:5)      X      
fizzBuzz(99, 102) → ["Fizz", "Buzz", "101"]      Exception:java.lang.ArrayIndexOutOfBoundsException: 98 (line number:5)      X      
fizzBuzz(14, 20) → ["14", "FizzBuzz", "16", "17", "Fizz", "19"]      Exception:java.lang.ArrayIndexOutOfBoundsException: 13 (line number:5)      X      
other tests
X      
Your progress graph for this problem
0
 
LVL 7

Author Comment

by:gudii9
Comment Utility
public String[] fizzBuzz(int start, int end) {
		int len =end-start;
		  String [] arr=new String[(len)];
		  for(int k=start;k<(end);k++){
		    arr[k-start]=String.valueOf(k);
		  }
		  for(int i=0;i<(len);i++){ 
		     if( (Integer.parseInt(arr[i]) )%3==0  && (Integer.parseInt(arr[i]) )%5==0){
			    arr[i]="FizzBuzz";
			  }
		 else if(  (Integer.parseInt(arr[i]) ) %3==0){
		    arr[i]="Fizz";
		  }
		 else if((Integer.parseInt(arr[i]) )%5==0){
		    arr[i]="Buzz";
		  }
		  }
		  return arr;
		}

Open in new window


i  fixed above issue passign all tests. any modifications/improvements/refinements to above code?
Expected      Run            
fizzBuzz(1, 6) → ["1", "2", "Fizz", "4", "Buzz"]      ["1", "2", "Fizz", "4", "Buzz"]      OK      
fizzBuzz(1, 8) → ["1", "2", "Fizz", "4", "Buzz", "Fizz", "7"]      ["1", "2", "Fizz", "4", "Buzz", "Fizz", "7"]      OK      
fizzBuzz(1, 11) → ["1", "2", "Fizz", "4", "Buzz", "Fizz", "7", "8", "Fizz", "Buzz"]      ["1", "2", "Fizz", "4", "Buzz", "Fizz", "7", "8", "Fizz", "Buzz"]      OK      
fizzBuzz(1, 16) → ["1", "2", "Fizz", "4", "Buzz", "Fizz", "7", "8", "Fizz", "Buzz", "11", "Fizz", "13", "14", "FizzBuzz"]      ["1", "2", "Fizz", "4", "Buzz", "Fizz", "7", "8", "Fizz", "Buzz", "11", "Fizz", "13", "14", "FizzBuzz"]      OK      
fizzBuzz(1, 4) → ["1", "2", "Fizz"]      ["1", "2", "Fizz"]      OK      
fizzBuzz(1, 2) → ["1"]      ["1"]      OK      
fizzBuzz(50, 56) → ["Buzz", "Fizz", "52", "53", "Fizz", "Buzz"]      ["Buzz", "Fizz", "52", "53", "Fizz", "Buzz"]      OK      
fizzBuzz(15, 17) → ["FizzBuzz", "16"]      ["FizzBuzz", "16"]      OK      
fizzBuzz(30, 36) → ["FizzBuzz", "31", "32", "Fizz", "34", "Buzz"]      ["FizzBuzz", "31", "32", "Fizz", "34", "Buzz"]      OK      
fizzBuzz(1000, 1006) → ["Buzz", "1001", "Fizz", "1003", "1004", "FizzBuzz"]      ["Buzz", "1001", "Fizz", "1003", "1004", "FizzBuzz"]      OK      
fizzBuzz(99, 102) → ["Fizz", "Buzz", "101"]      ["Fizz", "Buzz", "101"]      OK      
fizzBuzz(14, 20) → ["14", "FizzBuzz", "16", "17", "Fizz", "19"]      ["14", "FizzBuzz", "16", "17", "Fizz", "19"]      OK      
other tests
OK
0

Featured Post

6 Surprising Benefits of Threat Intelligence

All sorts of threat intelligence is available on the web. Intelligence you can learn from, and use to anticipate and prepare for future attacks.

Join & Write a Comment

Introduction This article is the last of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article covers our test design approach and then goes through a simple test case example, how …
Exception Handling is in the core of any application that is able to dignify its name. In this article, I'll guide you through the process of writing a DRY (Don't Repeat Yourself) Exception Handling mechanism, using Aspect Oriented Programming.
This video will show you how to get GIT to work in Eclipse.   It will walk you through how to install the EGit plugin in eclipse and how to checkout an existing repository.
In this fourth video of the Xpdf series, we discuss and demonstrate the PDFinfo utility, which retrieves the contents of a PDF's Info Dictionary, as well as some other information, including the page count. We show how to isolate the page count in a…

744 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now