Java While loop condition isn't being exicuted

MG Ianoma :

I'm working on a project for school but I can't figure out why my code isn't exiting when I type "zzz". it's probably simple and I'll likely feel dumb when I know what the problem is. here's my code:

import java.util.*;
public class StringSort2 {
public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    int counter = 0;
    String[] arr = new String[15];
    System.out.println("Enter item or type 'zzz' to quit");
    arr[0] = input.nextLine();
    counter++;

     do{     
         arr[counter] = input.nextLine();
         if (input.equals("zzz")){
             System.out.println("bleh");
         }
         counter++;

     } while (!input.equals("zzz") && counter <= 14);

     Arrays.sort(arr);
     System.out.println("Array is " + Arrays.toString(arr));
} 
Arvind Kumar Avinash :

Replace

if (arr[counter].equals("zzz")) {
    System.out.println("bleh");
}
counter++;

with

if (arr[counter].equals("zzz")) {
    System.out.println("bleh");
} else {
    counter++;
}

and

while (!input.equals("zzz") && counter <= 14)

with

while (!arr[counter].equals("zzz") && counter <= 14)

Explanation: zzz is a string which you have to compare with the input string stored in arr[counter].

Also, in order to avoid NullPointerException, you should perform sort operation on the copy of the array without any null element. Given below is the complete program:

import java.util.Arrays;
import java.util.Scanner;

public class StringSort2 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int counter = 0;
        String[] arr = new String[15];
        do {
            System.out.print("Enter item or type 'zzz' to quit: ");
            arr[counter] = input.nextLine();
            if (arr[counter].equals("zzz")) {
                System.out.println("bleh");
            } else {
                counter++;
            }
        } while (!"zzz".equals(arr[counter]) && counter <= 14);
        arr = Arrays.copyOf(arr, counter);
        Arrays.sort(arr);
        System.out.println("Array is " + Arrays.toString(arr));
    }
}

A sample run:

Enter item or type 'zzz' to quit: a
Enter item or type 'zzz' to quit: b
Enter item or type 'zzz' to quit: c
Enter item or type 'zzz' to quit: zzz
bleh
Array is [a, b, c]

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=418776&siteId=1