Pilnie potrzeban pomoc przy zadania Java

0

Dzien dobry ;)
Bardzo bym prosił o pomoc przy zadaniu o następującej treści:
"5. Pobierz od użytkownika dowolny tekst, następnie pobierz liczbę. Następnie spytaj, czy wydrukować dany tekst. W zależności od odpowiedzi, 1 oznacza tak, 2 oznacza nie, wykonaj zadanie , tzn. wydrukuj tyle razy, jaką liczbę podał użytkownik. Jeśli użytkownik wpisze coś innego niż 1 lub 2, wypisz „nie zrozumiałem, wybierz odpowiedź jeszcze raz”."
Wszystko szło "caaałkiem" niezle tzn udało mi sie jakos przebrnąc przez kolejne linie kodu aż doszedłem do pewnego momentu problem polega na tym że nie wiem jak wydrukmować tekst x ilości razy(taka ilość razy jaką poda użytkownik).
Tu jest mój kod wszystkie ewentułalne uwagi przyjmę z radością proszę wezcie pod uwagę to że dopiero się ucze.

import java.util.Scanner;

public class main {
    public static void main (String[]args){
        Scanner scanner = new Scanner(System.in);
        String name,surename;
        int phtoneNumber;

        System.out.println("What is yours name? ");
        name = scanner.next();

        System.out.println("What is your surename? ");
        surename = scanner.next();

        System.out.println("Can you give me your phone nummber? ");
        phtoneNumber = scanner.nextInt();

        System.out.println("Print?");

        System.out.println("1 = Hell Yea!!");

        System.out.println("2 = Nope");
        int a;
                a=scanner.nextInt();
        int copy;

         if (a==1) {
             boolean cos = true;

         }
       else if (a==0);
if(a==1){
    System.out.println("How much coppy you want?");
            }
            copy=scanner.nextInt();
 if((copy==1))
     for(int i=0; i>=copy; i++);
        System.out.println(name);
        
        System.out.println(copy);


    }
}

Tutaj jest kod który próbowałem napisać przy pomocy rozwiązania ale dalej nie drukuje tyle razy ile powinnien.

import java.util.Scanner;

public class main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String name, surename;
        int phtoneNumber;
        int j = 0;

        System.out.println("What is yours name? ");
        name = scanner.next();

        System.out.println("What is your surename? ");
        surename = scanner.next();

        System.out.println("Can you give me your phone nummber? ");
        phtoneNumber = scanner.nextInt();

        System.out.println("Print?");

        System.out.println("1 = Hell Yea!!");

        System.out.println("2 = Nope");
        int a;
        a = scanner.nextInt();
        int copy;
        System.out.println("How much coppy you want?");
        copy = scanner.nextInt();

        if (a == 1) {
            boolean cos = true;

        } else if (a == 0) ;
        switch (a) {
            case 1:
                do {
                    System.out.println(name);
                    j++;
                }
                while (j > copy);
                break;
        }

1

Masz tu taj błąd:

 if((copy==1))
     for(int i=0; i>=copy; i++);
        System.out.println(name);
 
        System.out.println(copy);
 

if() sprawdzi, czy jest warunek true, po czym wywoła for(); - a że for ma ; na końcu ti się wykona, nie robiąc nic, po czym wdrukuje raz name i raz copy.

Dobrą praktyką w javie jest używane nawiasów {} nawet dla jednolinjkowych ifów, twój kod powinien wyglądać tak:


 if((copy==1)){ //otwarty 1 nawias
     for(int i=0; i>=copy; i++){ //otwarty 2 nawias
        System.out.println(name);
 
        System.out.println(copy);
 }//zamknięty drugi nawias
} // zamknięty 1 nawias
0
Black007 napisał(a):

Masz tu taj błąd:

 if((copy==1))
     for(int i=0; i>=copy; i++);
        System.out.println(name);
 
        System.out.println(copy);
 

if() sprawdzi, czy jest warunek true, po czym wywoła for(); - a że for ma ; na końcu ti się wykona, nie robiąc nic, po czym wdrukuje raz name i raz copy.

Dobrą praktyką w javie jest używane nawiasów {} nawet dla jednolinjkowych ifów, twój kod powinien wyglądać tak:


 if((copy==1)){ //otwarty 1 nawias
     for(int i=0; i>=copy; i++){ //otwarty 2 nawias
        System.out.println(name);
 
        System.out.println(copy);
 }//zamknięty drugi nawias
} // zamknięty 1 nawias

Dzięki za radę ;). Wiesz usunełem to ";" i dalej nic nie robi nawet nie wydrukuje raz "nama"

0

Zobacz, co robisz w kodzie?
Najpierw pobierasz copy = - i tutaj użytkownik np. wpisuje ze chce 5
to nigdy nie wejdzie do pętli if, bo zrobiłeś, że tylko jeśli copy == 1 to wywołaj pętle

W ogóle co tu miałeś na myśli:


      if (a==1) {
             boolean cos = true;
 
         }
       else if (a==0);
if(a==1){
    System.out.println("How much coppy you want?");
            }
            copy=scanner.nextInt();
 if((copy==1))

Po co jest ten boolean cos?

2

Przede wszystkim co ma robić ten fragment kodu?

 boolean cos = true;

Po tym jak wpisujesz liczbę, tj.

int a;
a = scanner.nextInt();

musisz sprawdzić, czy ta liczba to 1czy 2, czy jakaś inna. Możesz np. użyć pętli:

while ((a != 1) && (a != 2)){
            System.out.println("nie zrozumiałem, wybierz odpowiedź jeszcze raz");
            a = scanner.nextInt();
}

tutaj jeśli a to liczba inna niż 1 albo 2 to pętla będzie się wykonywała dopóki nie wpisze się jednej ze wspomnianych liczb. Teraz wystarczy okodować przypadek dla a == 1 bo dla dwójki chyba nie trzeba nic robić. Czyli mamy:

      if (a == 1){
            System.out.println("How much coppy you want?");
            copy = scanner.nextInt();
        }

W tym ifie musisz jeszcze wyświetlić odpowiednią ilość razy. Tutaj wystarczy for:

for (int i = 0; i < copy; i++)

I wszystko powinno działać poprawnie.

PS. Popraw sobie anielskie słówka. Powinno być surname i phone.

0

Z gory dzięki za wszystkie rady i pomoc ;)
To tak próbowałem na metodzie boolean oprzeć ifa że jeżeli ten booaln coś równa się jeden to wtedy wydrukj "ile chcesz kopii" ale przypisując boolean 1 wychodziło mi że mam użyć integra używając int wychodziło mi ze mam użyć klasy boolean. Trochę to nie zrozumiale więc spróbuje pokazac jak to robiłem na kodzie.

System.out.println("2 = Nope");
        boolean trueFalse;
        trueFalse=scanner.nextBoolean();
        if(trueFalse==1){  W tym miejscu wychodziło mi że nie mogę metodzie bool przypisac wartości liczbowe.
            System.out.println("Ile chcesz?");
        }

Teraz próbowałem to odtworzyć w w kodzie ale mi nie wychodzi wcześniej jak przypisywałem do inta jeden lub dwa wychodziło mi że mam użyc metody boolean nie wiem coś namieszałem. Dzięki za pomoc sory za zamieszanie. Teraz usuwając boolean widzę że nic on nie robi. Jeżeli jeszcze raz napotkam się z tym problemem podziele się tym.
Pisząc dalej kod usuwając boolean i używając while pomogłeś mi usunąc jeden problem ale cholera nie wiem dalej jak wydrukować więcej ilości kopii bo pętla for zwiększa tam do jakiejś wartości "i" i przestaje działac ale nie drukuje tego co bym chciał. Spróbowałem Strinigi przerobić na tablice ale dalej nie drukuje więcej niż raz. Przechodzi tylko po zawartości tablicy cholera nie mam pomysłu jak to zrobić żeby działało. Tu jest nowy kod;

import java.util.Scanner;

public class main {
    public static void main (String[]args){
        Scanner scanner = new Scanner(System.in);
        String text[]=new String[2];
        int phoneNumber;

        System.out.println("What is yours name? ");
        text[0] = scanner.next();

        System.out.println("What is your surename? ");
        text[1] = scanner.next();

        System.out.println("Can you give me your phone nummber? ");
        phoneNumber = scanner.nextInt();

        System.out.println("Print?");

        System.out.println("1 = Hell Yea!!");

        System.out.println("2 = Nope");
        int a;
        int copy;
                a=scanner.nextInt();
                while (a!=1&a!=2){
                    System.out.println("Nie zrozumiałem podaj jeszcze raz czy chcesz drukowac czy nie.");
                    a=scanner.nextInt();
                }
                if(a==1){
                    System.out.println("How many copy you want?");
                    copy=scanner.nextInt();
                    for(int i=0; i<copy;i++){
                        System.out.println(text[i]);
                    }
                }


Sory za ten angielski na razie pracuje nad javą i matematyką a srednio mi to idzie jak uda mi się z tym zawalczyć wezmę się za Angielski z góry dzięki za pomoc.

1

Załóżmy że chcę 4 kopii. Co robi ten kod?

for(int i=0; i<copy;i++){
                        System.out.println(text[i]);
                    }

Próbuje wyświetlić: text[0], text[1], text[2], text[3], a istnieje tylko text[0] i text[1].

Powinno być:

for(int i=0; i<copy;i++){
                        System.out.println(text[0]); <--- imie
                        System.out.println(text[1]); <--- nazwisko
                        System.out.println(phoneNumber); <--- numer
}
           
0

Dzięki wielkie!!! Niech Ci Bóg w dzieciach wynagrodzi niech będzie dużo i brzydkie. A tak na prawdę dziękuję wam wszystkim za pomoc i za poswięcony czas ;) Dzięki Wieeelkie!

0

Jak już utworzyłem ten wątek to zapytam się o coś bo czesto nie mogę sobie z tym poradzić i muszę przepisywać kod.

import java.util.Scanner;

public class main {
    public static void main (String[]args){
        Scanner scanner = new Scanner(System.in);
        String text[]=new String[2];
        int phoneNumber;

        System.out.println("What is yours name? ");
        text[0] = scanner.next();

        System.out.println("What is your surename? ");
        text[1] = scanner.next();

        System.out.println("Can you give me your phone nummber? ");
        phoneNumber = scanner.nextInt();

        System.out.println("Print?");

        System.out.println("1 = Hell Yea!!");

        System.out.println("2 = Nope");
        int a;
        int copy;
                a=scanner.nextInt();
                while (a!=1&a!=2){
                    System.out.println("Nie zrozumiałem podaj jeszcze raz czy chcesz drukowac czy nie.");
                    a=scanner.nextInt();
                }
                if(a==1){
                    System.out.println("How many copy you want?");
                    copy=scanner.nextInt();
                    for(int i=0; i<copy;i++){
                        System.out.println("******************************");
                        System.out.println("Name: "+text[0]);
                        System.out.println("Surname: "+text[1]);
                        System.out.println("Phone Number: "+phoneNumber);
                        System.out.println("******************************");
                    }
                    else if (a==2) Tutaj mi wywala błąd "else" without if. |Jak użwyam samego elsa wychodzi ten sam komentarz. Co robie zle?
                    System.out.println();
                }


    }
}

1

@Misza_71: Brakuje Ci jeszcze jednej klamry zamykającej przed else if.

1
                    if(a==1){
                    System.out.println("How many copy you want?");
                    copy=scanner.nextInt();
                    for(int i=0; i<copy;i++){
                        System.out.println("******************************");
                        System.out.println("Name: "+text[0]);
                        System.out.println("Surname: "+text[1]);
                        System.out.println("Phone Number: "+phoneNumber);
                        System.out.println("******************************");
                    }
                    else if (a==2) Tutaj mi wywala błąd "else" without if. |Jak użwyam samego elsa wychodzi ten sam komentarz. Co robie zle?
                    System.out.println();
                }

Policz liczbę klamer, czy na pewno w dobrym miejscu wstawiasz else?

0

Dzięki teraz będe wiedział gdzie robie błąd nie pierwszy raz mi się to zdarzyło zwykle przepisywałem kod. Dziękuję bardzo za pomoc każdemu;)

0

Chyba się cholera do tego nie nadaję przeszedłem do kolejnej lekcji. To jest treśc zadania
"2. Oprogramuj bankomat. Po włączeniu programu niech wyświetla komunikat włóż kartę. 3 dowolne litery oznaczają daną kartę, (zdefiniuj ją w kodzie programu, aby miała jakąś wartość konta) po wpisaniu ich przejdź do trybu wyboru, gdzie będą opcje wypłać pieniądze i stan konta. Pamiętaj, że użytkownik nie może wypłacić więcej niż ma, możemy uprościć i użytkownik może mieć tylko całe złotówki i wypłacić dowolną ilość (nie musi być wielokrotność 10). Pomyśl o programie w ten sposób, aby w razie czego móc utworzyć sieć bankomatów. Użytkownik może wypłacić pieniądze kilkukrotnie, dopóki ma pieniądze na koncie. UWAGA! Do porównywania tekstu nie używamy znaków == tylko metody „tekst”.equals(„tekst”) czyli string1.equals(string2) Dlaczego, opowiem w następnej lekcji, ale to bardzo ważna różnica."
Próbowałem użyć ifów to tak na szybko bo orginalnie używam switcha cały kod urywa się przy "how much" i czy bym odwracał znak wielkości nic się nie zmienia. Albo urywa program albo jeden z ifów wydrukowuje mi że nie mam wystarczająco kasy. Jeżeli to nie było by probleme to prosze pomózcie mi bo nie wiem gdzie robię błąd
Kod na ifach:

import java.util.Scanner;

public class main {
    public static void main(String[]args){
        String choice;
        System.out.println("Insert your card:");
konto w= new konto(2000 ,"WBK");
konto b=new konto(3000,"BGZ");
konto s = new konto(1000, "SKK");
        System.out.println("W");
        System.out.println("B");
        System.out.println("S");
        Scanner scanner = new Scanner(System.in);
choice=scanner.next();
if(choice.equals("w")){
    int choice1;
    System.out.println("Pay money");
    System.out.println("Balance on screen");
    choice1=scanner.nextInt();
    if(choice1==1){
        System.out.println("How much?");
        int howMuchMoney;
        howMuchMoney=scanner.nextInt();
        if(w.getNumber()>howMuchMoney){
            System.out.println("You dont have enough money");

        }

          else if(howMuchMoney<=w.getNumber())
        System.out.println("Wait for money");


    }
}
    }
}

Kod na switchu orginalny:

import java.util.Scanner;

public class main {
    public static void main(String[]args){
        String choice;
        System.out.println("Insert your card:");
konto w= new konto(2000 ,"WBK");
konto b=new konto(3000,"BGZ");
konto s = new konto(1000, "SKK");
        System.out.println("W");
        System.out.println("B");
        System.out.println("S");
        Scanner scanner = new Scanner(System.in);
choice=scanner.next();
if(choice.equals("w")){
    int choice1;
    System.out.println("Pay money");
    System.out.println("Balance on screen");
    choice1=scanner.nextInt();
    switch(choice1){
    case 1:
        System.out.println("How much?");
        int howMuchMoney;
        howMuchMoney=scanner.nextInt();
        if(w.getNumber()<howMuchMoney){
            System.out.println("You dont have enough money");

        }
        int y=howMuchMoney-w.getNumber();
           if(howMuchMoney<=w.getNumber())
        System.out.println("Wait for money");
        System.out.println("On your account is:"+y);

    }
}
    }
}

Tu jest metoda "konto" moze tu zrobiłem błąd:

import java.util.Scanner;
public class konto {
   private String name;
  private  int enumber;
public konto(int number,String name){
    number=enumber;
    this.name=name;

}
public int getNumber(){
    return enumber;
}
public String getName(){
    return  name;
}
0

Nie wiem dlaczego ale gdy drukuje"w.getNumber" wychodzi mi zero więc chyba znalazłem błąd.

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