Próbuje napisać algorytm, który z podanego zakresu 100 liczb, znajdzie wszystkie które zawierają np. cyfrę 7. np. 7, 17 , 27 itp.
Możecie mi podpowiedzieć jak tego dokonać?
Próbuje napisać algorytm, który z podanego zakresu 100 liczb, znajdzie wszystkie które zawierają np. cyfrę 7. np. 7, 17 , 27 itp.
Możecie mi podpowiedzieć jak tego dokonać?
Przeiterować po wszystkich liczbach, zrzucić do stringa i wyszukać siódemkę w zapisie dziesiętnym dla każdej liczby.
wystarczy sprawdzić czy modulo 10 jest równe 7 ̶l̶u̶b̶ jeśli liczba jest więcej niż jedno cyfrowa podzielić przez 10 i wykonać punkt pierwszy.
@topik92 Modulo może nie działać dla liczb ujemnych, zależy od implementacji, więc trzeba być ostrożnym.
Afish napisał(a):
Przeiterować po wszystkich liczbach, zrzucić do stringa i wyszukać siódemkę w zapisie dziesiętnym dla każdej liczby.
Próbuję to zrobić od jakiegoś czasu i jedyne co wymyśliłem:
Zrobiłem tablice na 100 liczb, dodałem liczby od 1 do 100, a teraz próbuję zmienić jakoś** int** na te stringi, ale się nie da, bo podkreśla błąd i informuje, że wymaga int a znalazło string
public class Test {
public static void main(String[] args){
int[] sto = new int[100];
for (int i = 0; i <100; i++){
sto[i] = i + 1;
sto[i] = String.valueOf(sto[i]);
}
}
}
No to zróbmy to z kaczuszką:
Widzisz bezsens swojego kodu? A masz zrobić to:
Edycja: nie kasuj swoich wiadomości.
chyba się udało, ale proszę o potwierdzenie bo to mój pierwszy algorytm który działa :) wynik 19
public class Test {
public static void main(String[] args){
int[] sto = new int[100];
String[] sto2 = new String[100];
int licznik = 0 ;
for (int i = 0; i <100; i++){
sto[i] = i + 1;
}
for (int i = 0; i <100; i++){
sto[i] = i + 1;
sto2[i] = String.valueOf(sto[i]);
}
for (int i = 0; i <100; i++){
if (sto2[i].contains("7"))
{
licznik = licznik + 1;
}
}
System.out.println(licznik);
}
}
Ech, w ogóle mnie nie słuchasz. Na co Ci trzy pętle? Na co Ci tablica?
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
int result = 0;
for(int i=0;i<100;++i){
if(("" + i).indexOf("7") != -1)result++;
}
System.out.println(result);
}
}
Można jeszcze tak, jak już jesteśmy w dobie Javy 8:
long result = IntStream
.rangeClosed(1, 100)
.mapToObj(Integer::toString)
.filter(s -> s.contains("7"))
.count();
System.out.println(result);
Afish napisał(a):
Ech, w ogóle mnie nie słuchasz. Na co Ci trzy pętle? Na co Ci tablica?
class Ideone { public static void main (String[] args) throws java.lang.Exception { int result = 0; for(int i=0;i<100;++i){ if(("" + i).indexOf("7") != -1)result++; } System.out.println(result); } }
Wynik będzie nieprawidłowy, bo tylko raz policzy 77.
z 77 bierze tylko jedna 7, tak jak w moim
Źle precyzujesz zadanie, to i złe wyniki dostajesz. Było powiedziane:
Próbuje napisać algorytm, który z podanego zakresu 100 liczb, znajdzie wszystkie które zawierają np. cyfrę 7. np. 7, 17 , 27 itp.
Ani słowa o specjalnym traktowaniu 77. Czytelnik zechce sam dostosować program do swoich potrzeb.