01/10/2018, 15:20
Gặp rắc rối ở construction và method swap
Mình đang học java mình đang gặp rắc rối ở vụ swap , phương thức swap đặt trong 1 class qua một class mới có hàm main tạo ra đối tượng và gọi đến nó các cao nhân chỉ điểm.
Rac roi o ham swap no ko thuc thi theo y minh va copy mot mang contrucstion
import java.util.*;
public class Gach{
private Scanner sc =new Scanner(System.in);
private String MS , Mau;
private int SLVTH,CDVG,CNVG;
private long GB1H;
public Gach() {
MS = ""; Mau = "";SLVTH = 0 ;CDVG = 0 ; CNVG = 0 ;GB1H = 0; }
public Gach(String MS1, String Mau1, int SLVTH1 , int CDVG1,int CNVG1,long GB1H1) {
MS = MS1 ;Mau = Mau1; SLVTH = SLVTH1;
CDVG = CDVG1 ;CNVG = CNVG1; GB1H = GB1H1; }
public Gach(Gach copy) {
MS =copy.MS; Mau = copy.Mau; SLVTH = copy.SLVTH; CDVG = copy.CDVG;
CNVG = copy.CNVG ; GB1H = copy.GB1H ; }
public void nhapTT() {
System.out.print("Nhập vào MS ");
setMS(MS=sc.nextLine());
System.out.print("Nhập vào Màu ");
setMau(Mau=sc.nextLine());
System.out.print("Nhập vào số lượng viên gạch trên 1 hộp gạch ");
setSLVTH(SLVTH=sc.nextInt());
System.out.print("Nhập vào CDVG ");
setCDVG(CDVG=sc.nextInt());
System.out.print("Nhập vào CNVG ");
setCNVG(CNVG=sc.nextInt());
System.out.print("Nhập vào giá bán 1 hộp ");
setGB1H(GB1H = sc.nextLong());
sc.nextLine(); }
public void hienThi() {
System.out.println("-------Thông tin viên gạch---------");
System.out.println("MS: "+getMS());
System.out.println("Màu "+getMau());
System.out.println("SLVTH: "+getSLVTH());
System.out.println("CDVG: "+getCDVG());
System.out.println("CNVG: "+getCNVG());
System.out.println("GB1H: "+getGB1H());
}
public String getMS() { return MS;}
public void setMS(String mS) { MS = mS; }
public String getMau() { return Mau; }
public void setMau(String mau) { Mau = mau ;}
public int getSLVTH() { return SLVTH; }
public void setSLVTH(int sLVTH) { SLVTH = sLVTH ;}
public int getCDVG() { return CDVG; }
public void setCDVG(int cDVG) { CDVG = cDVG; }
public int getCNVG() {return CNVG;}
public void setCNVG(int cNVG) {CNVG = cNVG;}
public long getGB1H() {return GB1H;}
public void setGB1H(long gB1H) {GB1H = gB1H;}
public float giaBanLe(){
float gBL = (float) ((float)GB1H/SLVTH+(0.2*(float)GB1H/SLVTH));
return gBL;}
public float SMax(){
float Smax;
return Smax = CNVG*CDVG*SLVTH ;}
public float soLuongHop(int D,int N){
float soluonghop = (float)((D*N / (float)(CNVG*CDVG))/(float)SLVTH);
return soluonghop;}
public void sWap(Gach B){
Gach A = new Gach(this);
Gach temp = A;
A = B;
B = temp;}
}
Còn đây là class main
import java.util.*;
public class SDGach
{
public static Scanner sc = new Scanner(System.in);
public static void main(String[] args)
{ System.out.println("----------Mở Rộng-----------");
System.out.print("Nhập vào n viên gạch ");
int n ;n = sc.nextInt();
Gach First[] = new Gach[n] ;long X ;
for(int i = 0 ; i < n ; i++) {
First[i] = new Gach();
System.out.println("Nhập thông tin vien gạch "+i+":");
X = sc.nextLong() ;
First[i].setGB1H(X);}
//////So sánh rùi sắp xếp
for (int i = 0 ; i < First.length - 1; i++)
for (int j = i + 1; j < First.length; j++)
if(First[i].getGB1H()>First[j].getGB1H())
First[i].sWap(First[j]);
///In ra
for(int i = 0 ; i < First.length;i++)
First[i].hienThi();
}
}
Bài liên quan
Rắc dối ở đây là gì vậy?
Lẽ ra mình nên tạo hàm swap bên class chứa hàm main đó cậu nhưng mình lại làm bên class khác
Uh, nhưng cụ thể rắc rối là gì
ham swap ko chay duoc
Không chạy được là ntn, crash, không ra kết quả mong muốn, kết quả sau khi chạy là gì, kết quả mong muốn là gì.
PS: bạn có vẻ thích đánh đố người khác nhỉ. Tất cả mọi người ở đây là những người giúp đỡ bạn chứ không phải phục vụ bạn nên mọi người có thể bỏ qua mà không giúp bạn đỡ do đó nếu muốn nhận được sự giúp đỡ thì bạn hãy cung cấp thông tin đầy đủ vào thị mới có thể giải quyết vấn đề cho bạn
Chuyển swap thành static method.
Mình xin lỗi. Tại ko biết cách ăn nói lắm. Ko ra đc kết quả mong muốn á cậu
Kết quả nó không thay đổi khi nhập bạn ơi,nó vẫn như ban đầu
thật ra code của bạn sẽ k hoạt động, vì nó sẽ chẳng swap được.
@Vi_Huynh: trong java bạn k thể swap bằng cách trên được do trong java không cho phép truyền reference vào method
Thanks bạn nhé, mình update lại rồi
Chủ thớt xem lại inner for và if nữa. Vì bạn hỏi phần swap() nên mình chỉ trả lời swap()
thật ra mình sửa được rùi thật ra là lỗi dễ mà ko biết đường mò
if và inner for ko có sai đây là đoạn code mình sửa
Còn đây là main
Cái của bạn là copy property rồi, không hề có gì gọi là tráo đổi biến cả, nhưng không sao, chạy được là được, hoặc bạn có thể tham khảo code của @hungsteve
thank bạn nhé, hổm xem hôm nay vào xem lại mới nhớ quên cảm ơn