- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
这个程序是我类(class)的最终作业,我无法弄清楚为什么我收到错误“从内部类引用的局部变量必须是最终的或有效的最终”。该程序正在运行并发线程来对# 数组进行排序,然后找到该数组的高值和低值。当我在没有并发的情况下创建它时,我没有出现这个错误。我正在为最终确定高变量和低变量的位置而苦苦挣扎。
public void HiLo(int[] numbers){
int high = numbers[0];
int low = numbers[0];
Runnable r2 = new Runnable(){
@Ghi đè
công khai void run() {
System.out.println("The highest value is: ");
for (int index = 1; index < numbers.length; index++){
if (numbers[index] > high)
high = numbers[index];
System.out.println(high);
}
System.out.println();
System.out.println("The lowest value is: ");
for (int ind = 1; ind < numbers.length; ind++){
if (numbers[ind] < low)
low = numbers[ind];
System.out.println(low);
}
}
};
pool.execute(r2);
}
这是产生错误的代码块。如果我让 int high = numbers[0];或 int low = numbers[0]; final 然后我得到一个错误,我不能使该值最终并且相反变量的错误消失。
这是程序的其余部分。感谢您的帮助。
package concurrentthread;
nhập java.util.Arrays;
nhập java.util.Scanner;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
public class ConcurrentThread {
static Executor pool = Executors.newFixedThreadPool(2);
public static void main(String[] args) {
int size;
Scanner keyboard = new Scanner(System.in);
ConcurrentThread sort = new ConcurrentThread();
ConcurrentThread hilo = new ConcurrentThread();
System.out.println("This program will calculate the highest and lowest "
+ "numbers entered by the user \nand also sort them in "
+ "ascending order");
System.out.println();
System.out.print("How many numbers would you like in the array? ");
size = keyboard.nextInt();
final int[] numbers = new int[size];
for (int index = 0; index < numbers.length; index++){
System.out.print("Please enter a number between 1 and 100: ");
numbers[index] = keyboard.nextInt();
}
System.out.println();
sort.Sort(numbers);
hilo.HiLo(numbers);
//System.exit(0);
}
public void Sort(int[] numbers){
int sort = numbers[0];
Runnable r1 = () -> {
Arrays.sort(numbers);
System.out.println("The sorted values are: ");
for (int index = 0; index < numbers.length; index++)
System.out.print(numbers[index] + " ");
System.out.println();
};
pool.execute(r1);
}
public void HiLo(int[] numbers){
final int high = numbers[0];
int low = numbers[0];
Runnable r2 = new Runnable(){
@Ghi đè
công khai void run() {
System.out.println("The highest value is: ");
for (int index = 1; index < numbers.length; index++){
if (numbers[index] > high)
high = numbers[index];
System.out.println(high);
}
System.out.println();
System.out.println("The lowest value is: ");
for (int ind = 1; ind < numbers.length; ind++){
if (numbers[ind] < low)
low = numbers[ind];
System.out.println(low);
}
}
};
pool.execute(r2);
}
câu trả lời hay nhất
您不断更新 run()
方法中的 cao
Và thấp
,根据定义使它们不是有效的 final。
因为无论如何在 run()
方法之外都不需要它们,所以只需将这两行移到里面。
public void HiLo(int[] numbers){
Runnable r2 = new Runnable(){
@Ghi đè
công khai void run() {
int high = numbers[0];
int low = numbers[0];
System.out.println("The highest value is: ");
关于java - 从内部类引用的局部变量必须是 final 或有效的 final,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32707583/
Tôi đang viết một phương thức Java có chữ ký sau. void Logger(Phương thức phương thức, Object[] args); Nếu một phương thức (chẳng hạn như ABC() ) gọi phương thức này Logger, thì nó sẽ
Tôi mới làm quen với Java. Vấn đề của tôi là chương trình Java của tôi không thể tìm thấy JButton mà tôi đang cố sử dụng làm tệp hình ảnh. (Hiện tại mã này không làm gì cả vì tôi chỉ có được giao diện mong muốn trước tiên). Đây là mã lớp chính của tôi: packag
Được rồi, hôm nay tôi sẽ thực hiện một cuộc phỏng vấn và tôi đã viết mã Java được nhiều năm. Trong cuộc phỏng vấn, anh ấy nói "Việc thu gom rác Java là một vấn đề hóc búa và tôi có một số người bạn đang cố gắng tìm ra nó. Bạn thấy thế nào về vấn đề này?". Cô ấy đang cố nói dối tôi phải không? Hoặc cả cuộc đời tôi
Bạn tôi đưa cho tôi một câu đố để giải. Nó diễn ra như thế này: Có 100 người trong số họ, đến lượt mình, thực hiện như sau.
Nếu tôi biên dịch một ứng dụng sử dụng mã Java 5 thành mã byte, liệu tệp .class kết quả có chạy trong Java 1.4 không? Nếu cái sau hoạt động và tôi đang cố gắng sử dụng Jav trong ứng dụng Java 1.4 của mình
Có những câu hỏi về lý do tại sao Java không hỗ trợ các kiểu không dấu và một số câu hỏi về việc xử lý các kiểu không dấu. Tôi đã thực hiện một số tìm kiếm và có vẻ như Scala cũng không hỗ trợ các kiểu dữ liệu không dấu. Hạn chế là Java và S
Tôi chỉ muốn biết liệu mã byte được tạo trong một phiên bản java có chạy trên các phiên bản java khác Câu trả lời hay nhất Thông thường, mã byte có thể chạy trên các phiên bản java mới hơn mà không cần sửa đổi. Nó sẽ không chạy trên các phiên bản cũ hơn trừ khi bạn sử dụng các tham số đặc biệt (
Tôi có một câu hỏi cơ bản về việc thực thi các chương trình java trong dấu nhắc lệnh. Trên một số máy chúng ta cần chỉ định -cp. (đường dẫn lớp) thực thi chương trình java cùng lúc (test là tên file java và file .class tồn tại trong cùng thư mục) jav
Tôi đã đọc StackOverflow được một thời gian và tôi mới có đủ can đảm để đặt câu hỏi. Tôi 20 tuổi và hiện đang học tại một trường đại học CNTT ở quê hương (Cluj-Napoca, Romania). Giới thiệu thế đủ rồi :D Về cơ bản, tôi có một công ty cung cấp ứng dụng kế toán
Tôi không thể public JSONObject parseXML(String xml) { JSONObject jsonObject = XML.toJSONObject(xml); r
Tôi đã triển khai một ngôn ngữ thông dịch đơn giản với kiểu gõ động trong Java. Thật không may tôi gặp phải vấn đề sau. Đoạn mã sau được sử dụng trong quá trình thử nghiệm: def main() { def ks = Map[[1, 2]].keySet()
Luôn nhắc nhập một số từ 1 đến 10 - kết quả sẽ cộng thêm st, rd, th và nd vào số đó. Viết chương trình nhắc người dùng nhập bất kỳ số nguyên nào từ 1 đến 10, sau đó hiển thị số nguyên đó ở dạng thứ tự có thêm hậu tố. công cộng
Tôi có DownloadFile.java này và nó tải xuống tệp như mong đợi: import java.io.*; import java.net.URL public class DownloadFile {
Tôi muốn thêm độ trễ vào GUI. Tôi đặt 2 vòng lặp for rồi vẽ lại nhãn, nhưng 2 vòng lặp for này được thực thi lần lượt và nhãn được vẽ lại đến nhãn cuối cùng. Tôi có thể làm gì? for(int i=0;
Tôi đang thực hiện một số thử nghiệm với các mục danh sách của đối tượng Sinh viên, nhưng tôi thích tạo một danh sách được mã hóa cứng trong đối tượng lớp java rồi lấy dữ liệu từ đó thay vì kết nối với cơ sở dữ liệu và chọn các bản ghi trong tập kết quả. Tuy nhiên, đã lâu rồi tôi mới làm việc này,
Tôi biết rằng việc tạo đối tượng được chia thành ba phần: khai báo khởi tạo khởi tạo classA{} classB mở rộng classA{} classA obj = khởi tạo classB mới (1,1);
Tôi quan tâm đến việc xây dựng hệ thống theo dõi xe bằng GPRS. Tuy nhiên, tôi có một số câu hỏi dành cho những ai đã từng làm việc này trước đây: GPRS có phải là công nghệ tốt nhất không? Mọi người có nhận thức được vấn đề gì không? Tôi dự định sử dụng Java/Java EE - có công nghệ nào tốt hơn không? nếu như
Tôi có thể đảo ngược mảng bằng phương pháp đệ quy như: array={1,2,3,4,5} array result={5,4,3,2,1} nhưng kết quả của tôi là cùng một mảng và tôi không biết Tại sao, xin hãy giúp tôi. lớp công khai Đệ quy { p
Có một cách tiêu chuẩn để làm điều này? Bao gồm mã nguồn Java - Mã kiểm tra - Đơn vị liên kết Ant hoặc Maven Tích hợp liên tục (có thể là kiểm soát hành trình) Công cụ kiểm soát phiên bản ClearCase Triển khai đến máy chủ ứng dụng Cuối cùng, tôi muốn có một môi trường tích hợp và xây dựng tự động.
Tôi thậm chí không biết liệu điều này có khả thi hay không và tôi rất nghi ngờ điều đó là có thể, nhưng nếu có, bạn có thể cho tôi biết cách thực hiện không? Tôi chỉ muốn biết cách in một số văn bản từ máy in. Có ý tưởng gì không? Câu trả lời hay nhất Đây là một cái gì đó đơn giản hơn. nhập javax.swin
Tôi là một lập trình viên xuất sắc, rất giỏi!