Przekazanie zmiennych do konstruktora PODSTAWY

0

Witam, mam problem z przesłaniem zmiennych wpisanych przez użytkownika do konstruktora.
Program nie wyrzuca błędu ale wynik to 0 a taki nie powinien być.

import java.util.Scanner;

public class Prostokat {
	static int a;
	static int b;
	Prostokat(int a, int b){
		this.a = a;
		this.b = b;
	}
	
	void wczytajLiczby(){
		Scanner scanner = new Scanner(System.in);
		System.out.println("Podaj bok a: ");
		int a = scanner.nextInt();
		System.out.println("Podaj bok B: ");
		int b = scanner.nextInt();
		
	}	
	
	double pole(){
		return a*b;
	}

	public static void main(String[] args) {
		Prostokat p1 = new Prostokat(a,b);
		p1.wczytajLiczby();
		System.out.println(p1.pole());
	}

}

2

Szybka poprawka

        //int a = scanner.nextInt();
        a = scanner.nextInt();
        System.out.println("Podaj bok B: ");
        //int b = scanner.nextInt();
        b = scanner.nextInt();
>>>javac Prostokat.java && echo 6 111|java Prostokat
Podaj bok a:
Podaj bok B:
666.0
1

Powinno wyglądać to inaczej :

/* package whatever; // don't place package name! */

import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */
class rect
{
    private int a;
    private int b;
    public rect(int a, int b)
    {
        this.a = a;
        this.b = b;
    }
    public void ShowVariables()
    {
        System.out.println(a + " " + b);
    }
}
class Ideone
{
	public static void main (String[] args) throws java.lang.Exception
	{
		rect rectangle1 = new rect(4, 5);
		rectangle1.ShowVariables();
	}
}

https://ideone.com/4IAjzX

1
int a = scanner.nextInt();

Przecież tutaj wczytujesz do zmiennej lokalnej o nazwie a, która przesłania zmienną klasową o tej samej nazwie.

Prostokat p1 = new Prostokat(a,b);

Zagadka: jakie wartości mają a i b w tym miejscu?

0

Dzięki za pomoc :) głupi błąd.

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