Strona 1 z 2

Programowanie java, pętle

: 22 paź 2012, 15:21
autor: karolinaa1231
Napisz program wypisuj¡cy na ekran wszystkie argumenty programu:
• z wykorzystaniem petli while,
• z wykorzystaniem petli do-while,
• z wykorzystaniem petli for.

Proszę o pomoc z tym programem. Zaczełam tak:

import java.io.Console;
public class Zadanie13 {
public static void main(String[] agrs) {
int argument= 0;
System.out.println("Argumenty programu");
for (argument= 0; agrument < argumenty.lenghth; argument ++){
System.out.println("Argument" + (argument + 1) + " - " + argumenty[argument]);
}
}
}

Jako główny, niestey nie dziala

: 22 paź 2012, 15:25
autor: josselyn
Tablica nazywa się agrs a nie argumenty. Powinno być agrs[argument], agrs.length.
Poza tym raz Twoja zmienna nazywa sie argument a raz agrument.

: 22 paź 2012, 15:42
autor: karolinaa1231
import java.io.Console;
public class Zadanie13 {
public static void main(String[] agrs) {
int argument= 0;
System.out.println("Argumenty programu");
for (argument= 0; argument < args.length; argument ++){
System.out.println("Argument" + (argument + 1) + " - " + args[argument]);
}
}
}

Czyli to?
Nadal sa jeszcze dwa błędy których nie rozumiem;/

Re: Programowanie java, pętle

: 22 paź 2012, 15:48
autor: josselyn
To może te błędy też byś wrzuciła?
Jak ja programuję, to patrzę na komunikat błędu i numery linijek, w których są błędy

: 22 paź 2012, 16:12
autor: karolinaa1231
Zadanie13.java:6 error: cannot find symbol
for <argument=0; argument < args.length; argument ++){

symbol: variable args
location class Zadanie13
Zadanie13.java:7 error: cannot find symbol
System.out.println("Argument" + (argument + 1) + " - " + args[argument]);

symbol : variable args
location: class Zadanie13
2 errors


Czyli z tego co zrozumiałam to w zlej klasie jest umieszczony? Ale nie rozumiem jak to zrobic innaczej

: 22 paź 2012, 16:20
autor: josselyn
public static void main(String[] agrs) {
Tablica nazywa się agrs. Zwykła literówka.

: 22 paź 2012, 16:38
autor: karolinaa1231
Dziekuja dziala, lecz w 1. juz z pętlą wyskakuje następujący komunikat:

Argumenty programu
Exception in thread "main" java.lang.ArraysIndexOutOfBoundsException: 2 at Zadanie13a.main(Zadanie13a.java:10)

Kod programu mam taki:
import java.io.*;
public class Zadanie13a {
public static void main(String[] args) {
int argument= 0;
System.out.println("Argumenty programu");
argument= 0;
while (argument < args.length){
argument ++;
}
System.out.println("Argument" + (argument + 1) + " - " + args[argument]);
}
}

: 22 paź 2012, 16:41
autor: josselyn
Linijkę System.out.println("Argument" + (argument + 1) + " - " + args[argument]);
wrzuć do petli while, komunikat mówi, że wychodzisz poza zakres.
Tylko jak wrzucisz do pętli to przed linijkę:
argument ++;

: 22 paź 2012, 16:49
autor: karolinaa1231
Dziekuje ślicznie. Mam jeszcze prośbe co do programu który bedzie sprawdzał czy liczba jest pierwszą, napisałam tak

import java.io.Console;
public class Zadanie16 {
public static void main(String[] args){
Console wierszPolecen= System.console();
String tekst= wierszPolecen.readLine("Podaj liczbe naturalna");
double liczba=Double.parseDouble(tekst);
if (liczba==1||liczba==0){
System.out.println("Nie jest liczba pierwsza");
}else{
int liczbaDzielnikow= 1;
int dzielnik= 2;
for (int dzielnik=2; dzielnik<liczba; dzielnik++){
if(liczba%dzielnik==0){
liczbaDzielnikow++;
}
}
}
}
}

: 22 paź 2012, 17:34
autor: josselyn
W pętli starczy jak bedziesz sprawdzac do pierwiastka z liczba, to przyspieszy działanie programu
dzielnik<=Math.sqrt(liczba).
Jakieś błędy wyskakują? Bo sama idea działania programu jest dobra.

: 22 paź 2012, 17:49
autor: karolinaa1231
Ale w której pętli bo nie bardzo wiem w którym miejscu?

: 22 paź 2012, 17:51
autor: josselyn
W tej
for (int dzielnik=2; dzielnik<liczba; dzielnik++){
To co napisałaś nie jest źle. Ale wystarczy przejrzeć dzielniki do pierwiastka z liczby.
Tu masz ładnie rozpisane w Javie
http://pl.wikipedia.org/wiki/Sito_Eratostenesa

: 22 paź 2012, 17:58
autor: karolinaa1231
Czyli tak?
import java.io.Console;
public class Zadanie16 {
public static void main(String[] args){
Console wierszPolecen= System.console();
String tekst= wierszPolecen.readLine("Podaj liczbe naturalna");
double liczba=Double.parseDouble(tekst);
if (liczba==1||liczba==0){
System.out.println("Nie jest liczba pierwsza");
}else{
int liczbaDzielnikow= 1;
int dzielnik= 2;
for (dzielnik<=Math.sqrt(liczba)){
if(liczba%dzielnik==0){
liczbaDzielnikow++;
}
}
}
}
}

Wyskakuje sporo błędów w 12 i 13 linijce

: 22 paź 2012, 19:01
autor: josselyn
Bo źle masz napisaną konstrukcję petli for.
Zamiast
dzielnik<liczba;
miałaś wpisać
dzielnik<=Math.sqrt(liczba)

: 22 paź 2012, 19:47
autor: karolinaa1231
import java.io.Console;
public class Zadanie166 {
public static void main(String[] args){
Console wierszPolecen= System.console();
String tekst= wierszPolecen.readLine("Podaj liczbe naturalna");
int liczba=Integer.parseInteger(tekst);
if (liczba==1||liczba==0){
System.out.println("Nie jest liczba pierwsza");
}
int liczbaDzielnikow= 1;
int dzielnik= 2;
for (dzielnik =< Math.sqrt(liczba) ;dzielnik++){
if(liczba%dzielnik==0){
liczbaDzielnikow++;
}
}
}
}

I wyskakuja następujące błędy:
Zadanie166.java:12 error: ) expected
for (dzielnik =< Math.sqrt(liczba); dzielnik++ ){
Zadanie166.java:12: error: ';' expeected
for (dzielnik =< Math.sqrt(liczba); dzielnik++ ){
Zadanie166.java:12: error: illegal start of expression
for (dzielnik =< Math.sqrt(liczba); dzielnik++ ){