01/10/2018, 17:18
Code tính tổng của các số nhập vào không ra kết quả
ĐỀ BÀI : Write a program that allows you to enter unlimited numbers (one number at a time) until you enter 0. Then print out the total value of the enter numbers.
void bm8(){
boolean h = true;
int i = 0;
int sum = 0;
int q;
ArrayList<Integer> s = new ArrayList<Integer>();
while (h) {
Scanner t = new Scanner(System.in);
q = t.nextInt();
if (q < 10){
s.add(q);
}
i++;
if (q == 0) {
h = false;
for(int j = 0; j < i; j++) {
sum = sum + s.get(j);
}
}
}
System.out.println("sum ="+ sum);
}
Bài liên quan
Cảm ơn bài viết của bạn
Sao lúc mà nhập số ấy , bạn k cộng nó vô luôn , đỡ phải chạy vòng lặp tính sum
mình cũng thử rồi và không được bạn ạ
ý tưởng là:
=> Không cần : ArrayList, biến boolean h, biến chạy i, câu if check = 0, vòng for tính tổng
Hazzz, sao bạn cứ phải làm to vấn đề lên vậy @@ Với bài này thì chỉ cần theo Logic sau :
while()
đến khi số nhập vào== 0
ArrayList
Việc bạn làm bài toán này trở nên khó khăn khiến cho code dễ gặp phải bug và người khác đọc rất khó hiểu. Với lại cũng nên xem lại cách mà bạn fomart code thì nó hơi lung tung Cố sửa nhé !
Còn về bug trong đoạn code kia thì là do đoạn
Tức là khi số nhập vào
>= 10
thì sẽ không được add vào ArrayList nhưng mà lúc đó đoạni++;
vẫn được chạy. Nên là sẽ bị quá giới bạn củaArrayList
==> Sinh ra lỗi:java.lang.IndexOutOfBoundsException
. Với cả bạn hoàn toàn có thể dùng hàm.size()
củaArrayList
để lấy ra số lượng phần tử trongArrayList
nhénhững đề bài nó bắt nhập 0 ra luôn kết quả mà b ?
giả sử nhập 12350 thì làm sao để nó biết mình nhập 0 vào ? bạn có thể code sơ qua cho mình hiểu được không
Đoạn do while sẽ thực hiện đến khi người dùng nhập số 0 như bạn nói.
nếu làm như bạn thì bạn hiểu sai ý của mình rồi ! ý của mình khi mình nhập số 12530 ấy thì chỉ nhập 1 lần khi đến số 0 thì nó sẽ tự sum = 1+2+5+3+0 chứ không phải là nhập lần lượt các số vào
Bài này mình rối ở chỗ khi nhập vào thì đến lúc nhập số 0 nó tự động dừng kiểu như giới nhập từ bàn phím vậy nên mình mới dùng arraylist nhưng không được
Bạn có bị hiểu nhầm đề bài không ?? Đề dịch ra là:
ầy dà chắc mình dịch nhầm đề rồi @@ nhưng bạn có thể giúp mình các khúc mắc trên được không ?
Thế thì dùng
nextInt
là không ổn. Khi dùngnextInt
thì nó lấy các chữ số liên tiếp thành 1 số. 123450 sẽ thành 123450 chứ không phải từng số 1, 2, 3, 4, 5, 0.Nên dùng
next
để lấy chuỗi rồi tách từng chữ số.oh thanks bác nhiều nhé !
Cảm ơn mọi người nhiều nhé em giải quyết được rồi xin đóng topic ạ !
Close topic theo yêu cầu