java podstawy

0

Witam doświadczonych kolegów i koleżanki; jestem totalnie zielona w programowaniu i potrzebuje pomocy;
zadanie brzmiało następująco;
Ukończ następujący program:
dwa ciągi tablicowe są podane jeden dla nazw, a drugi dla równoważnych nazwisk sławnych osób.
program po prostu weźmie nazwę jako dane wejściowe, a następnie znajdzie odpowiednie nazwisko, a następnie wydrukuje całą nazwę.
aby lepiej zrozumieć dwa przykłady są podane poniżej (Twój scenariusz programu powinien być dokładnie podobny do tego)
Przykład 1:
Wprowadź nazwę:
złupić
Pełna nazwa celebryty to:
harry potter

Przykład 2:
Wprowadź nazwę:
Jacky
Pełna nazwa celebryty to:
Jacky Chan

mój kod wygląda dokładnie tak, zrobiłam źle bo wywala mi błąd proszę pomóżcie bo już nie mam pomysłu;
import java.util.Scanner;
public class namesearch
{

public static String names[]={"harry","michael","will","tom","jackie"};    
    public static String surnames[]={"potter","jackson","smith","cruise","chan"};    

public static void main(String a[]) throws Exception
{
Scanner sc=new Scanner(System.in);
String name;

     System.out.println("Enter the name:");
      name=sc.next();
   
   
      

System.out.println("Full name of the celebraty is:");{
String surnames;

      if (name=="harry"){
          surnames="potter";
        
        }
      if (name=="michael"){
           surnames="jackson";
         
        }
      if (name=="will"){
           surnames="smith";
         
        }
      if (name=="tom"){
          surnames="cruise";
       
        }
      if (name=="jackie"){
           surnames="chan";
       
        }
    }
        
        
        
        
        
        
        
        
        }
   

       

/*write down your logic*/
  System.out.println(name + suranames);
    }//main 

}

0
  1. wywala mi błąd - jaki błąd?
  2. popraw formatowanie kodu (zaznacz blok kodu, prawa górna ikona, wybierz język)
6
  1. Jak wklejasz kod na forum to wstaw całość w znacznik kodu

  2. Meriutum twojego problemu
    Głównym twoim problemem jest to, że porównujesz dwa Stringi za pomoc a operatora ==.
    Warunek

if (name=="harry")

zwraca false.
Dzieje się tak, gdyż stosując operator == dla Stringów porównujemy referencję.
Stringi porównuj zawsze za pomocą metody equals, która porównuje zawartość a nie czy fizycznie są to te same obiekty.

  1. W zadaniu masz tablicę z nazwiskami, której nie wykorzystujesz a chyba o to chodziło w zadaniu :P

  2. a co do "wywala mi błąd", to masz bez sensu wstawiony nawias:

System.out.println("Full name of the celebraty is:");{

i litrówkę (jak poprawisz literówkę to będzie że niezainicjalizowana zmienna)

suranames
0
public class NameSearch {
    private static String[] names = {"Harry", "Donald", "Rocky"};
    private static String[] surnames = {"Potter", "Trump", "Balboa"};
    private static Scanner scanner = new Scanner(System.in);
    private static boolean foundMatch = false;
    public static void main(String... args) {
        System.out.println("Podaj imię celebryty:");
        String name = scanner.next();
        for(int i = 0; i < names.length; i++) { //iterujemy po tablicy imion
            if(names[i].equalsIgnoreCase(name)) { //sprawdzamy czy imię wprowadzone przez użytkownika, istnieje w tablicy
                System.out.println("Znam gościa, to " + names[i] + " " + surnames[i]); //wyświetlamy imię i odpowiadające mu nazwisko(!)
                foundMatch = true; //ustawiamy flagę która nas informuje o tym, że znaleźliśmy naszego celebrytę
            }
        }
        if(!foundMatch) { //do tej pętli wejdziemy, jeżeli nie znajdziemy celebryty w pętli powyżej
            System.out.println("Nie znam celebryty o imieniu " + name);
        }
    }
}

Nie bardzo rozumiem jednak jedną rzecz, w jaki sposób mamy przypasować imię do nazwiska? Jeżeli ma to byc po prostu kolejnośc w tablicy to powyższy przykład jest ok, jednak w lini z (!) musisz uważać, tablice imion i nazwisk muszą mieć taką samą długość, inaczej poleci piękny ArrayOutOfBoundException.

1 użytkowników online, w tym zalogowanych: 0, gości: 1