Tôi gặp phải vấn đề làm thế nào để lấy các số nguyên được phân tách bằng dấu cách trong java bằng lớp máy quét. Tôi đã thử nhiều thứ từ stack over flow nhưng rất ít hiệu quả. Vì vậy, cuối cùng khi tôi tìm ra cách làm điều đó, tôi đang chia sẻ nó với mọi người
Scanner scanner = new Scanner[System.in];
List list = new ArrayList[];
while [scanner.hasNextInt[]]
list.add[scanner.nextInt[]];
int[] arr = list.toArray[new int[0]];
Nhưng điều này đang sử dụng Danh sách có thể không dành cho người mới bắt đầu trong java
Vì vậy, tôi tìm thấy một cách khác. -
String s[]= scanner.nextLine[].split[" "];for[int i =0 ;i < s.length;i++]{ a[i]= Integer.parseInt[s[i]];
}
Ok Chỉ cần sao chép dán nó và nó sẽ hoạt động
Tôi sẽ phải giải thích nó quá?
Vì vậy, dòng tiếp theo đọc một dòng từ Máy quét. Nó nhận được một dòng đầu vào dưới dạng một chuỗi. Chúng tôi đang sử dụng nextLine vì nó chỉ đọc dòng cho đến khi đạt đến '\ n' được biểu thị là nextLine
Bây giờ chúng tôi đã đọc một chuỗi nhưng có vẻ như
"1 2 3 4 5 6 7 8 9"
Bây giờ việc sử dụng chuỗi này là gì. Bây giờ chúng ta cần phá vỡ chuỗi này. Hàm split[] này cũng có sẵn trong python. Vì vậy, khi chúng tôi chia tách, nó sẽ chuyển đổi chuỗi thành Mảng
máy quét. hàng tiếp theo[]. tách ra[" "]
['1','2','3','4','5','6','7','8','9']
Bây giờ để lưu trữ một mảng, chúng ta cần một mảng, đó là lý do tại sao có [Chuỗi []] dấu ngoặc vuông
Bây giờ chúng ta có mọi thứ tuyệt vời chỉ có một vấn đề là dữ liệu trong mảng string là các ký tự không phải int nên chúng ta cần chuyển đổi nó thành số nguyên
a=Số nguyên. parseInt[s[0]]
System.out.println[a]1
Hàm này chuyển đổi chuỗi thành số nguyên. Bạn có thể đọc thêm về nó từ google nhưng đó là toàn bộ cơ bản để đọc đầu vào được phân tách bằng dấu cách
Sử dụng vòng lặp while để tiếp tục duyệt qua tất cả các ký tự [sử dụng fread] cho đến khi kết thúc tệp và kiểm tra xem ký tự có phải là một chữ số không. Nếu đó là một chữ số, hãy thêm nó vào biến của bạn để giữ số đó và chuyển sang ký tự tiếp theo. Nếu đó là khoảng trắng, hãy tải số trước đó vào mảng hoặc danh sách được liên kết của bạn và chuyển sang ký tự tiếp theo. Điều tương tự cho
String s[]= scanner.nextLine[].split[" "];for[int i =0 ;i < s.length;i++]{ a[i]= Integer.parseInt[s[i]];3
}
Hàm nhận một đối số tùy chọn
String s[]= scanner.nextLine[].split[" "];for[int i =0 ;i < s.length;i++]{ a[i]= Integer.parseInt[s[i]];4 và ghi nó vào đầu ra tiêu chuẩn mà không có một dòng mới ở cuối
}
Sau đó, hàm đọc dòng từ đầu vào, chuyển đổi nó thành chuỗi và trả về kết quả
Lưu ý rằng hàm
String s[]= scanner.nextLine[].split[" "];for[int i =0 ;i < s.length;i++]{ a[i]= Integer.parseInt[s[i]];5 được đảm bảo trả về một chuỗi, ngay cả khi người dùng nhập một số nguyên
}
my_list = input['Enter space-separated integers: '].split[]
list_of_integers = [int[item] for item in my_list]
print[list_of_integers]
Phương thức tách chuỗi thành một danh sách các chuỗi con bằng dấu phân cách
Khi không có dấu tách nào được chuyển đến phương thức
String s[]= scanner.nextLine[].split[" "];for[int i =0 ;i < s.length;i++]{ a[i]= Integer.parseInt[s[i]];6, nó sẽ tách chuỗi đầu vào thành một hoặc nhiều ký tự khoảng trắng
}
Bước cuối cùng là sử dụng khả năng hiểu danh sách để chuyển đổi các chuỗi trong danh sách thành số nguyên
my_list = input['Enter space-separated integers: '].split[]
list_of_integers = [int[item] for item in my_list]
print[list_of_integers]
Khả năng hiểu danh sách được sử dụng để thực hiện một số thao tác cho mọi phần tử hoặc chọn một tập hợp con các phần tử đáp ứng một điều kiện
Trên mỗi lần lặp, chúng tôi chuyển mục danh sách hiện tại sang lớp
String s[]= scanner.nextLine[].split[" "];for[int i =0 ;i < s.length;i++]{ a[i]= Integer.parseInt[s[i]];7 để chuyển đổi nó thành một số nguyên
}
Ngoài ra, bạn có thể sử dụng hàm
my_list = input['Enter space-separated integers: '].split[]
list_of_integers = [int[item] for item in my_list]
print[list_of_integers]
2Để lấy các số nguyên được phân tách bằng dấu cách từ đầu vào của người dùng
- Sử dụng hàm
String s[]= scanner.nextLine[].split[" "];for[int i =0 ;i < s.length;i++]{ a[i]= Integer.parseInt[s[i]];
5 để lấy nhiều số nguyên cách nhau bằng dấu cách
} - Sử dụng hàm
2 để chuyển đổi từng chuỗi thành số nguyênmy_list = input['Enter space-separated integers: '].split[] list_of_integers = [int[item] for item in my_list] print[list_of_integers]
- Sử dụng lớp
5 để chuyển đổi đối tượngmy_list = input['Enter space-separated integers: '].split[] list_of_integers = [int[item] for item in my_list] print[list_of_integers]
6 thành danh sáchmy_list = input['Enter space-separated integers: '].split[] list_of_integers = [int[item] for item in my_list] print[list_of_integers]
String s[]= scanner.nextLine[].split[" "];for[int i =0 ;i < s.length;i++]{ a[i]= Integer.parseInt[s[i]];1
}
Chúng tôi đã sử dụng hàm
String s[]= scanner.nextLine[].split[" "];for[int i =0 ;i < s.length;i++]{ a[i]= Integer.parseInt[s[i]];6 để tách chuỗi gồm nhiều số nguyên được phân tách bằng dấu cách
}
Hàm nhận một hàm và một iterable làm đối số và gọi hàm với mỗi mục của iterable
Hàm
my_list = input['Enter space-separated integers: '].split[]
list_of_integers = [int[item] for item in my_list]
print[list_of_integers]
6 gọi lớp String s[]= scanner.nextLine[].split[" "];for[int i =0 ;i < s.length;i++]{ a[i]= Integer.parseInt[s[i]];7 với mỗi giá trị trong danh sách và chuyển đổi mỗi chuỗi thành một số nguyên
}