30/09/2018, 21:01

Sửa lỗi chương trình java

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package ktlt10;

import java.util.*;

/**
 *
 * @author HuongUD
 */
public class Cau10 {
    public static void main(String[] args) {
        int a[] = null, n = 0, chon = 0;
        Cau10 ds = new Cau10();
        
        while(chon != 4){
            System.out.println("------------------------------");
            System.out.println("Chon 1 de Nhap day so");
            System.out.println("Chon 2 de Tim phan tu lon nhat");
            System.out.println("Chon 3 de Tinh tong day");
            System.out.println("Chon 4 de Ket thuc");
            System.out.println("------------------------------");
            System.out.print("Chon: ");
            
            Scanner input = new Scanner (System.in);
            chon = input.nextInt();
            
            switch (chon) {
                case 1:
                    ds.nhap(a);
                    break;
                case 2:
                    ds.timMax(a, n);
                    System.out.println("Phan tu lon nhat la: " + timMax(a, n));
                    break;
                case 3:
                    ds.tinhTong(a, n);
                    System.out.println("Tong cua day la: " + tinhTong(a, n));
                    break;
                case 4:
                    quit();
                default:
                    System.out.println("Ban da nhap sai moi ban nhap lai!");
            }
        }
    }
    
    public static void nhap(int a[]){
        System.out.print("Nhap so phan tu day: ");
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();
        
        a = new int[n];
        for (int i = 0; i < a.length; i++) {
            System.out.print("a[" + i + "]: ");
            a[i] = input.nextInt();
        }
    }
    
    public static int timMax(int a[], int n){
        if(n == 1)
            return a[0];
        else{
            if(a[n - 1] > timMax(a, n - 1))
                return a[n - 1];
            else
                return timMax(a, n- 1);
        }
    }
    
    public static int tinhTong(int a[], int n){
        if(n == 1)
            return a[0];
        else 
            return a[n - 1] + tinhTong(a, n - 1);
    }
    
    public static void quit(){
        System.exit(0);
    }
}

Mình mới học về java nên ko thành thạo về nó mong mn thông cảm. Chương trình mình viết ra vậy nhưng không chạy, ai giúp mình sửa lỗi với. Cảm ơn mn ạ!

Hung Nguyen viết 23:05 ngày 30/09/2018

Mới đọc sơ qua thì mình thấy chương trình này không chạy tiếp trong trường hợp nhập 2 hoặc 3 ngay từ đầu=> giá trị của mảng a chưa được khởi tạo=> không tìm được giá trị lớn nhất (hoặc tổng) => error! Ngoài ra mình thấy bố cục và cách trình bày của bạn khá rồi rắm, làm phức tạp hóa vấn đề

17XGOD viết 23:08 ngày 30/09/2018

bạn cho menu chọn. Nếu chọn 1 thì mới nhập được dãy số còn chọn 2 hoặc 3 thì không nhập được => lấy gì để máy chạy ??

Quân viết 23:07 ngày 30/09/2018

Một bài đơn giản không cần tới đệ quy làm gì, mất công nghĩ, sau này vài tháng nhìn lại thì tự hỏi “what the hell is it?”

NOName viết 23:02 ngày 30/09/2018

Dữ liệu mảng mình nhập từ case 1 r mà, nhưng làm sao để case 2 case 3 lấy dữ liệu đc cậu. Mình mới tự học mong cậu chỉ dẫn.

NOName viết 23:11 ngày 30/09/2018

Đề bài bắt buộc làm đệ quy cậu à

NOName viết 23:16 ngày 30/09/2018

Mình sai và cần sửa ở đâu mong bạn chỉ giúp để mình sửa thank bạn

17XGOD viết 23:01 ngày 30/09/2018

ý là nếu người dùng không chọn 1 ngay từ ban đầu thì sao ?

Hung Nguyen viết 23:10 ngày 30/09/2018

bài này đơn giản mà dùng đệ quy tự nhiên thành đau đầu, mình code mẫu trường hợp tìm max, tính tổng bạn search google, lưu ý xử lý thêm cả trường hợp người dùng nhập 0, số âm hoặc chữ cái…
Đây là class Mảng:
public class Mang {

private int a[];
private int n;

public Mang() {

}

public int get_n() {
	return n;
}

public void nhap() {
	// TODO Auto-generated method stub
	System.out.println("Nhap day so: ");
	System.out.print("Nhap so phan tu day: ");
	Scanner input = new Scanner(System.in);
	n = input.nextInt();

	a = new int[n];
	for (int i = 0; i < n; i++) {
		System.out.print("a[" + i + "]: ");
		a[i] = input.nextInt();
	}
}

public int timMax(int start, int end) {
	int temp = 0;
	if (start == end)
		return a[start];
	else {
		temp = (start + end) / 2;
		return (timMax(start, temp) > timMax(temp + 1, end)) ? timMax(start, temp) : timMax(temp + 1, end);
	}
}

}

Class Main (Cau10):
package hung.example.test2;

/**
*

  • @author HuongUD
    /
    import java.util.
    ;

public class Cau10 {

public static void main(String[] args) {

	Mang mang = new Mang();
	mang.nhap();
	;

	int chon = 0;
	while (chon != 4) {
		System.out.println("------------------------------");
		System.out.println("Chon 1 de Tim phan tu lon nhat");
		System.out.println("Chon 2 de Tinh tong day");
		System.out.println("Chon 3 de Ket thuc");
		System.out.println("------------------------------");
		System.out.print("Chon: ");

		Scanner input = new Scanner(System.in);
		chon = input.nextInt();

		switch (chon) {
		case 1:

			System.out.println("Phan tu lon nhat la: " + mang.timMax(0, mang.get_n()-1));
			break;
		case 2:

			// System.out.println("Tong cua day la: " + mang.tinhTong());
			break;
		case 3:
			System.exit(0);
		default:
			System.out.println("Ban da nhap sai moi ban nhap lai!");
		}
	}
}

}

Bài liên quan
0