javalinear-search

Trying Linear Search in java but it seems loop is not iterating


I am trying to use Linear Search using java to find the name in the 2d array and print the details related to it, but the code is directly going to last loop without searching

the code is

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class Source {

String customerDetails[][]=new String[5][3];
Source()
{
customerDetails[0][0]="1001";
customerDetails[0][1]="Raj";
customerDetails[0][2]="Chennai";

customerDetails[1][0]="1008";
customerDetails[1][1]="Akshay";
customerDetails[1][0]="Pune";

customerDetails[2][0]="1002";
customerDetails[2][1]="Simrath";
customerDetails[2][2]="Amristar";

customerDetails[3][0]="1204";
customerDetails[3][1]="Gaurav";
customerDetails[3][2]="Delhi";

customerDetails[4][0]="1005";
customerDetails[4][1]="Ganesh";
customerDetails[4][2]="Chennai";

}

public static void main(String args[] ) throws Exception {
    
    Source nc = new Source();
    Scanner sc = new Scanner(System.in);
    String key = sc.nextLine();
    boolean found = false;
    for(int i=0;i<5;i++){
        for(int j=0;j<3;j++){
            
            if(nc.customerDetails[i][j].equals(key)){
                found = true;
                System.out.println(nc.customerDetails[i][0] + '\n' + nc.customerDetails[i][1] + '\n' + nc.customerDetails[i][2]);
                break;
                
            }
        }
        if(!found){
            System.out.println("No Record Found");
            break;
        }
    }
}
}

i want to find Gaurav in the array and print 1204 Gaurav Delhi


Solution

  • public class test
    {
    
        String customerDetails[][] = new String[5][3];
    
        test()
        {
            customerDetails[0][0] = "1001";
            customerDetails[0][1] = "Raj";
            customerDetails[0][2] = "Chennai";
    
            customerDetails[1][0] = "1008";
            customerDetails[1][1] = "Akshay";
            customerDetails[1][2] = "Pune";
    
            customerDetails[2][0] = "1002";
            customerDetails[2][1] = "Simrath";
            customerDetails[2][2] = "Amristar";
    
            customerDetails[3][0] = "1204";
            customerDetails[3][1] = "Gaurav";
            customerDetails[3][2] = "Delhi";
    
            customerDetails[4][0] = "1005";
            customerDetails[4][1] = "Ganesh";
            customerDetails[4][2] = "Chennai";
    
        }
    
        public static void main(String args[]) throws Exception
        {
    
            test nc = new test();
            Scanner sc = new Scanner(System.in);
            String key = sc.nextLine();
            boolean found = false;
            for (int i = 0; i < 5; i++)
            {
                for (int j = 0; j < 3; j++)
                {
    
                    if (nc.customerDetails[i][j].equals(key))
                    {
                        found = true;
                        System.out.println(nc.customerDetails[i][0] + '\n' + nc.customerDetails[i][1] + '\n' + nc.customerDetails[i][2]);
                        break;
    
                    }
                }
    
            }
            if (!found)
            {
                System.out.println("No Record Found");
                // break;
            }
        }
    }
    

    This should work. if(!found) should be outside the loop to check all records.