Có cách nào dễ dàng mà không cần phải sử dụng thư viện java để kết hợp hai int không? Có thể toán học?ghép hai int trong java
nói rằng tôi có 9 và 10, sau đó tôi muốn nó được 910 hoặc 224 và 225 sau đó tôi muốn nó được 224225.
Có cách nào dễ dàng mà không cần phải sử dụng thư viện java để kết hợp hai int không? Có thể toán học?ghép hai int trong java
nói rằng tôi có 9 và 10, sau đó tôi muốn nó được 910 hoặc 224 và 225 sau đó tôi muốn nó được 224225.
Bất cứ điều gì trong java.lang.*
nên trò chơi công bằng ...
int a = Integer.parseInt(Integer.toString(9) + Integer.toString(10));
Phụ Lục:
Tôi không thích theo cú pháp vì quá tải nhà điều hành không tuyên bố ý định rõ ràng như ở trên. Chủ yếu là vì nếu chuỗi rỗng bị lấy nhầm, kết quả sẽ khác.
int a = Integer.parseInt(9 + "" + 10);
Tôi muốn biến nó thành 'int a = Integer.parseInt (9 +" "+ 10)'. Chính xác hơn nhiều. –
@Adeel - Tôi không đồng ý. Đọc nhận xét của tôi về câu trả lời của pst. – Jeremy
@ Jeremy: Điều đó không giữ ở đây. Bởi vì nếu bạn vô tình xóa 'empty_quotes', thì sáng hôm sau bạn sẽ nghĩ tại sao tôi nên phân tích' int' thành 'int'. Và điều đó sẽ cho bạn một gợi ý rằng bạn chưa bao giờ là ngu ngốc để làm điều đó ngay từ đầu. Vì vậy, phải có một cái gì đó còn thiếu. Oh yeah 'empty_quotes'. –
Bạn (khả năng) muốn nối chuỗi (bạn cũng có thể muốn một kết quả số nguyên , nếu đúng như vậy, hãy xem các câu trả lời khác). Nếu điều này đúng, về việc ghép nối, hãy tưởng tượng a và b là số nguyên:
"" + a + b
Điều này làm việc vì toán tử + bị quá tải nếu toán hạng là một chuỗi. Sau đó nó chuyển đổi toán hạng khác thành một chuỗi (nếu cần) và dẫn đến một chuỗi nối mới. Bạn cũng có thể gọi Integer.toString(a) + Integer.toString(b)
hoặc sử dụng String.format
thích hợp nhưng những phương pháp này có thời lượng dài hơn.
Điều này sẽ cung cấp cho bạn số nguyên như mong đợi nhưng chỉ hoạt động khi b > 0
.
int a = 224;
int b = 225;
int c = (int) Math.pow(10, Math.floor(Math.log10(b))+1)*a + b; // 224225
Chỉ cần một lời giải thích nhanh chóng: này xác định số chữ số trong b
, sau đó tính một yếu tố nhân cho a
như vậy mà nó sẽ di chuyển trong cơ sở 10 thêm một chữ số hơn b
.
Trong ví dụ này, b
có 3 chữ số, floor(log10(b))
trả về 2 (làm điều này bằng trực giác như 10^2=100
, 10^3 = 1000
, chúng tôi đang ở đâu đó ở khoảng giữa 225). Sau đó, chúng tôi tính toán hệ số nhân của 10^(2+1)
, đây là 1000
. Khi chúng tôi nhân a
trước 1000, chúng tôi nhận được 224000
. Thêm 224000
vào 225
sẽ thu được 224225
mong muốn.
Điều này không thành công tại b == 0
vì log10(0)
không được xác định.
Thú vị. +1 –
Điều đó thật gọn gàng! +1 –
Đây là phiên bản của tôi mà hoạt động khi a, b> = 0.
Đó là lâu hơn một chút, nhưng là 10x nhanh hơn so với phương pháp đăng nhập và 5x nhanh hơn so với phụ thêm chuỗi.
int concat(int a, int b)
{
if (b == 0)
a *= 10;
else
{
int tempB = b;
while (tempB > 0)
{
tempB /= 10;
a *= 10;
}
}
return a + b;
}
Hãy sửa đổi điều này để làm việc cho số âm.
a + "" + b
kết quả do lỗi "loại không tương thích"
// The left operand to previousOperator.
private int leftOperand;
leftOperand = leftOperand + "" + số;
số được định nghĩa là int trong tờ khai phương pháp
này hoạt động java.lang
nhập khẩu. *
leftOperand = Integer.parseInt (Integer.toString (leftOperand) + Integer.toString (con số));
Bạn có muốn kết quả cũng là số nguyên không? –
Tôi có thiếu gì đó không? làm thế nào về điều này: String result = 9 + "" + 10; hoặc int i = Integer.valueOf (9 + "" + 10); –
có! kết quả cuối cùng như số nguyên xin vui lòng! – aherlambang