Modyfikacja programu poprzez dodanie metod

0

Witam, mam kolejna zagadke. Noo przynajmniej dla mnie to zagadka.
A wiec mam program:

import java.util.Scanner;

/* This program allow user to input 4 saver's balances
and the percentage bonus and then output new balances */
class SaverBonusWithMethods
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);

double[] numList = new double[4];
int count;
double percentage;

for (count = 0; count < 4; count++)
{
System.out.print("Input " + (count + 1) + " saver's balance: ");
numList[count] = input.nextDouble();
System.out.println();
}

System.out.print("Input percentage bonus: ");
percentage = input.nextDouble();
System.out.println("=============================");

for (count = 0; count < 4; count++)
{
System.out.println("New balance for " + (count + 1) + " saver: " + (numList[count] * percentage) + numList[count]);
System.out.println();
}

System.out.println("=============================");
}
}

Musze go zmodyfikowac uzywajac 3 oddzielnych metod dla funkcji:

  • zezwolenie uzytkownikowi na wprowadzenie 4 balansow
  • uaktualnienie balansow o bonus
    -wyswietlenie balansu dla kazdej z czterech osob

Z gory dziekuje za wszelka pomoc.

0

Najprościej to przenieś pętle do nowych metod.

0

moze jeszcze jakas podpowiedz? Nie jestem za dobry z metod.

0

co jest nie tak z ta metoda:

public static void savers()
{
double[] numList = new double[4];
int count;

    for (count = 0; count < 4; count++)
    {
     System.out.print("Input " + (count + 1) + " saver's balance: ");
     numList[count] = input.nextDouble();
    }

[line: 15]
Error: cannot find symbol
symbol : variable input
location: class SaverBonus

0

W metodzie servers nie inicjujesz obiektu intput, możesz go przekazać w argumencie metody np:

public static void savers(Scanner input)
0

import java.util.Scanner;

/* This program allow user to input 4 saver's balancew
and the percentage bonus and then output new balances */
class SaverBonus
{
public static void savers(Scanner input)
{
double[] numList = new double[4];
int count;

    for (count = 0; count < 4; count++)
    {
     System.out.print("Input " + (count + 1) + " saver's balance: ");
     numList[count] = input.nextDouble();
    }
}

public static void main(String[] args)
{
Scanner input = new Scanner(System.in);

savers(Scanner input);

System.out.print("Input percentage bonus (%): ");
percentage = input.nextDouble();
System.out.println("=============================");

for (count = 0; count < 4; count++)
{
System.out.println("New balance for " + (count + 1) + " saver: " + ((numList[count] * percentage + numList[count]) * 0.1));
System.out.println();
}

System.out.println("=============================");
}
}

[line: 23]
Error: illegal start of expression

Co jest teraz nie tak? :-(

0

Lepiej weź sie za naukę języka.

0

@Luke82: Teraz zapytam szczerze: Czy ty nie umiesz czytac ??
Error: illegal start of expression -> Slownik angielskiego jak nie umiesz i jazda !
Jak juz powiedzial bogdans ja tez ci proponuje nauke!
No i tak o:

 savers(Scanner input);

To w zyciu metody nie wywolasz!

0

Dzieki za rady chlopcy, ale wolalbym takie o ktorych nie wiem. Angielski umiem i wiem co illegal start of expression means ale niestety nie wiem jaki jest legal start of expression.

0

Uzupełnię, weź się za naukę języka Java.

0

bogdans_niezalogowany teraz sie z toba zgadzam. Wlanie zaczalem nauke tego wspanialego jezyka jednak skads musze wziasc jakies informacje na jego temat zanim sie go naucze. Moze znacie namiary na jakies jasno wytlumaczone materialy? Na poczatek moga byc na temat metod :-)

0

Nozi dzieki za linka, na pewno z niego skorzystam a poki co to zrobilem pierwsza metode i wyglada to tak:

import java.util.Scanner;

/* This program allow user to input 4 saver's balancew
and the percentage bonus and then output new balances */
class SaverBonus
{
public static void savers(Scanner input)
{
double[] numList = new double[4];
int count;

    for (count = 0; count < 4; count++)
    {
     System.out.print("Input " + (count + 1) + " saver's balance: ");
     numList[count] = input.nextDouble();
    }
}

public static void main(String[] args)
{
Scanner input = new Scanner(System.in);

double[] numList = new double[4];
double percentage;
int count;

savers(input);

System.out.print("Input percentage bonus (%): ");
percentage = input.nextDouble();
System.out.println("=============================");

for (count = 0; count < 4; count++)
{
System.out.println("New balance for " + (count + 1) + " saver: " + ((numList[count] * percentage + numList[count]) * 0.1));
System.out.println();
}

System.out.println("=============================");
}
}

Nie ma zadnych bledow ale niestety co bym nie wpisal to na koncu wynik jest 0. Co jest nie tak? Tylko mnie znow nie zbesztajcie.
Dzieki za pomoc.

0

Masz dwie dwie różne tablice o tej samej nazwie numList, w metodzie savers wypełniasz jedną z nich, w metodzie main wypisujesz drugą.
Jedno z możliwych rozwiązań problemu:

mport java.util.Scanner;

/* This program allow user to input 4 saver's balancew
 and the percentage bonus and then output new balances */
class SaverBonus
{
    double[] numList = new double[4];
    public static void savers(Scanner input)
    {
        
        int count;
       
        for (count = 0; count < 4; count++)
        {
         System.out.print("Input " + (count + 1) + " saver's balance: ");
         numList[count] = input.nextDouble();
        }
    }
   
 public static void main(String[] args)
 {
  Scanner input = new Scanner(System.in);
 
  double percentage;
  int count;
 
  savers(input);
 
  System.out.print("Input percentage bonus (%): ");
  percentage = input.nextDouble();
  System.out.println("=============================");
 
  for (count = 0; count < 4; count++)
  {
   System.out.println("New balance for " + (count + 1) + " saver: " + ((numList[count] * percentage + numList[count]) * 0.1));
   System.out.println();
  }
 
  System.out.println("=============================");
 }
}

P.S. umieszczaj kod między znacznikami < code=java > i < /code >, bez spacji.

0

cos jest nie tak z: numList[count] = input.nextDouble(); bo wyskakuja bledy w 15 i 23 lini.

0

bo nie uzywa sie zmiennych instancyjnych w metodzie statycznej

0

Zapomniałem o modyfikatorze

import java.util.Scanner;

/* This program allow user to input 4 saver's balancew
 and the percentage bonus and then output new balances */
class SaverBonus
{
    static double[] numList = new double[4];
0

bogdans_niezalogowany jestes WIELKI. Mam nadzieje ze z pozostalymi dwoma pojdzie mi juz teraz gladko. Dzieki.

0

Juz prawie to mam :-) ale niestety wcaz cos nie tak:

import java.util.Scanner;

/* This program allow user to input 4 saver's balancew
and the percentage bonus and then output new balances */
class SaverBonus
{
static double[] numList = new double[4];

//method to input savers balances
public static void savers(Scanner input)
{
    int count;
   
    for (count = 0; count < 4; count++)
    {
     System.out.print("Input " + (count + 1) + " saver's balance: ");
     numList[count] = input.nextDouble();
    }
}

//method to calculate new balances
public static double  balance(double percentage)
{
    int count;
    double newBalance = 0;
    
    for (count = 0; count < 4; count++)
    {
        newBalance = (numList[count] * percentage + numList[count]) * 0.1;
    }
    return newBalance;
}

//method to display new balances
public static void display(double toCalculate)
{
   int count;
   for (count = 0; count < 4; count++)
    {
        System.out.print("New balance: " + toCalculate);
    }
}
    

public static void main(String[] args)
{
    Scanner input = new Scanner(System.in);

    double percentage, toCalculate;
    int count;

    savers(input);

    System.out.print("Input percentage bonus (%): ");
    percentage = input.nextDouble();
    System.out.println("=============================");

    toCalculate = balance(percentage);

    display(toCalculate);
}

}

Przy wyswietlaniu prawdziwy jest tylko ostatni wynik a reszta to zera. DLACZEGO???

0

A co Ty tu dokladnie robisz ?

W display 4 razy jest wyswietlane to samo.
W balance jest zwracana wartosc zalezna od ostatniej pozycji w numList ( wiec po co iteracja po wszystkich ).

0

Co robie? Wlasnie sam zaczynam sie nad tym zastanawiac. Jeszcze na poczatku chcialem aby za pomoca metody wprowadzac balansy, nastepna miala sluzyc do obliczenia aktualnych balansow a ostatnia do wyswietlenia wynikow. Tylko juz sie chyba pogubilem troche. :-( Ten wektor mi wszystko miesza. A jesli chodzi o pytanie po co iteracja we wszystkich to wydaje mi sie ze robie ja w pierwszej metodzie zeby zapisac 4 dane, w drugiej zeby te 4 dane uaktualnic a w 3 zeby je wszystkie wyswietlic. Pewnie glupie jest to co napisalem ale niestety nie jestem geniuszem w programowaniu.

0

Może jednak poczytasz o zupełnych podstawach Javy przed pisaniem programów.

0

poczytam, poczytam ale musze skonczyc to cholerstwo najpierw. Chocbym mial siedziec tydzien nad tym. Podejrzewam ze tylko od was zalezy ile na to czsu poswiece :-( Wydawalo mi sie ze nie mam problemu z metodami ale ten wektor mi jakos wszystko w glowie miesza. Co ja robie zle? HEEEEEELPPPPP!!!

0

Szkoda tygodnia.
Trzymaj i poswiec ten tydzien na jakas ksiazke o javie.

class SaverBonusWithMethods
{
	public static void main(String[] args)
	{
		Scanner input = new Scanner(System.in);

		double[] numList = readNumList(input);
		double percentage = readPercentage(input);
		updateBalances(numList, percentage);
		printData(numList);
	}

	private static void printData(double[] numList)
	{
		for(int i = 0; i < numList.length; i++)
		{
			System.out.println("New balance for " + (i + 1) + " saver: " + numList[i]);
			System.out.println();
		}

		System.out.println("=============================");
	}

	private static void updateBalances(double[] numList, double percentage)
	{
		for(int i = 0; i < numList.length; i++)
		{
			numList[i] *= 1 + percentage;
		}
	}

	private static double readPercentage(Scanner input)
	{
		double percentage = 0;

		System.out.print("Input percentage bonus: ");
		percentage = input.nextDouble();
		System.out.println("=============================");

		return percentage;
	}

	private static double[] readNumList(Scanner input)
	{
		double[] result = new double[4];

		for(int count = 0; count < 4; count++)
		{
			System.out.print("Input " + (count + 1) + " saver's balance: ");
			result[count] = input.nextDouble();
			System.out.println();
		}
		return result;
	}
}
0

dzieki Luno, a powiedz mi jaka ksiazke polecalbys dla poczatkujacego? Sa jakies cwiczenia do javy?

0
Luke82 napisał(a)

dzieki Luno, a powiedz mi jaka ksiazke polecalbys dla poczatkujacego? Sa jakies cwiczenia do javy?

http://4programmers.net/Java/Książki_do_Javy

Mysle, ze dla kogos kto zaczyna, ksiazki z serii Head First sa dobre, bo przedstawiaja temat w bardzo przystepnej formie

0

Dzieki raz jeszcze i zabieram sie za lekture.

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