- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的程序似乎很合我意。但是,当我编译它时,我收到了这条消息:
Note: Program.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
我可以做什么来识别使用 -Xlint 的不安全操作,或者程序中的什么导致了此消息?我认为这与我的 Node 类有关......?
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JOptionPane;
/**
* An application that reads from a file, enters/deletes in queue and writes output to the file
*/
public class Program {
/**
* Driver code to test class
*
* @param arguments
* Commandline arguments. 1st argument is input file and 2nd argument is output file
* @throws IOException
*/
public static void main(String[] arguments) throws IOException {
//Queue Object
MyQueue queue= (new MyQueue());
Tên chuỗi;
//reading file
read(queue,arguments[0]);
String[] array = { "Offer Person", "Poll Person", "Peek person","Display Queue", "Exit Program"};
int choice = 0;
// display loop
while (choice != array.length-1) {
choice = JOptionPane.showOptionDialog(null, // put in center of screen
"Press a Button", // message to user
"Queue(Line) of People", // title of window
JOptionPane.YES_NO_CANCEL_OPTION, // type of option
JOptionPane.QUESTION_MESSAGE, // type of message
null, // icon
array, // array of strings
array[array.length - 1]); // default choice (last one)
if(choice==0)
{
//inserting the new name in queue
name=JOptionPane.showInputDialog(null,"Enter Person's name","Input");
queue.offer(name);
}
else if(choice==1){
//Display and remove the name which is at front of line
JOptionPane.showMessageDialog(null, queue.poll() + " is next in line");
}
else if(choice==2){
//Display name which is at front of line
JOptionPane.showMessageDialog(null, queue.peek() + " is front of the line");
}
else if(choice==3){
//Dispay all the list
JOptionPane.showMessageDialog(null, queue.toString());
}
//JOptionPane.showMessageDialog(null, "Your pressed button #" + choice);
}
//calling writing function
write(queue, arguments[1]);
}// end of main()
/**
* Reads a file
* @param queue
* @param file_name name of file
*/
public static void read(QueueInterface queue, String file_name) throws IOException{
thử
{
Tên chuỗi;
//creating a buffer reader to read
BufferedReader br= new BufferedReader(new FileReader(file_name));
while((name=br.readLine()) != null){
//putting in the queue
queue.offer(name);
}
//closing buffer reader
br.close();
}
catch(Exception ex)
{
System.err.println(ex.getMessage());
}
}
/**
* Writes the contents of LinkedQueue to the output file at the ned of program
* @param queue QueueInterface methods
* @param file_name name of file
*/
public static void write(QueueInterface queue, String file_name) throws IOException{
thử
{
Tên chuỗi;
//creating a buffer writer to write
BufferedWriter bw= new BufferedWriter(new FileWriter(file_name));
while((name=queue.poll()) != null){
//writin in file
bw.write(name);
bw.newLine();
}
//closing buffer
bw.close();
}
catch(Exception ex)
{
System.err.println(ex.getMessage());
}
}
}// end of class
/**
* Interface to be implemented by LinkedQueue
*/
interface QueueInterface
{
public boolean empty();
public boolean offer(String element);
public String poll();
public String peek();
}
class Node
{
private String data;
private Node nextNode;
public Node(String dataObject, Node nextNodeObject)
{
this.data=dataObject;
this.nextNode=nextNodeObject;
}
/**
* Gets the next node
* @return next node
*/
public Node getNext()
{
return nextNode;
}
/**
* Sets the next node of the current node
* @param nextNodeObject next node to be set as next to the current node
*/
public void setNext(Node nextNodeObject)
{
nextNode=nextNodeObject;
}
/**
* Sets data of the current node
* @param dataObject data to be inserted in new node
*/
public void setData(String dataObject)
{
this.data=dataObject;
}
/**
* Gets data of the current node
* @return data of the node
*/
public String getData()
{
return this.data;
}
}
class LinkedQueue implements QueueInterface
{
protected Node lastNode=null;
LinkedQueue() {
}
/**
* Checks if the queue is empty
* @return true if empty, false if not empty
*/
public boolean empty() {
if(lastNode==null)
{
trả về giá trị đúng;
}
khác
trả về false;
}
/**
* Inserts new node in the queue
* @param element data to be inserted in new node
* @return true on success
*/
public boolean offer(String element)
{
Node newLastNode = new Node(element,null);
//If the LinkedQueue is empty, add the node to the last and point next to itself
if(empty())
{
newLastNode.setNext(newLastNode);
}
khác
{
// Adding to the front of queue and updating next of the last node
newLastNode.setNext(lastNode.getNext());
lastNode.setNext(newLastNode);
}
lastNode=newLastNode;
trả về giá trị đúng;
}
/**
* Removes the first node and returns it
* @return data at first node
*/
public String poll()
{
// If queue is empty then return null
if(empty())
trả về giá trị null;
khác
{
Node frontNode = lastNode.getNext();
//Check if there will be no node left after polling this one
if (frontNode == lastNode)
{
lastNode = null;
}
else //Remove the first node and update next of the last node
{
lastNode.setNext(frontNode.getNext());
}
return frontNode.getData();
}
}
/**
* Returns data of the first node without removing it from the queue
* @return data at first node
*/
public String peek()
{
if (empty())
{
trả về giá trị null;
}
khác
{
Node frontNode = lastNode.getNext();
return frontNode.getData();
}
}
}
class MyQueue extends LinkedQueue{
/**
* Constructor
*
*/
public MyQueue()
{
siêu();
}
/**
* Returns a string representation of the object
*
* @return a name on different lines
*/
public java.lang.String toString()
{
// create a variable to return
java.lang.String toReturn = "";
// Traversing the list
Node frontNode = lastNode.getNext();
if(empty()) //If queue is empty
return "";
else if(frontNode==lastNode) //If only one elemtn
{
return frontNode.getData().toString();
}
else //More than one element in the queue
{
while(frontNode != lastNode)
{
toReturn=toReturn+frontNode.getData()+"\n";
frontNode=frontNode.getNext();
}
toReturn= toReturn+frontNode.getData()+"\n"; //Appending data of last node because it will be missed in the loop
}
return toReturn;
}
}
1 Câu trả lời
如果您在命令行上编译(即 javac Program.java
),您只需添加 -Xlint:unchecked
让它为您打印警告的参数:
javac Program.java -Xlint:unchecked
这应该会向您指出问题点。但是,正如@DavidWallace 在评论中提到的那样,您应该考虑修改对泛型的使用,使其更加清晰——即使不使用 -Xlint
也可能会向您揭示您的问题。参数。
如果你的类真的应该只处理 Sợi dây
s,那么你根本不需要包含类型参数(现在,在你的代码中,
是一个类型参数,代表你在使用类时传入的类型 - 它并不意味着它必须是 java.lang.String
——这就是为什么@DavidWallace 建议您改用 T
的原因)。 Here's如果您想复习如何使用泛型,这是一个很好的教程。
关于java - 如何使用 -Xlint 重新编译?掌握,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22875001/
Câu hỏi này đã có câu trả lời tại đây: Phương thức apply() của Scala hoạt động như thế nào? (3 câu trả lời) Đã đóng 9 năm trước. Giả sử tôi có một lớp MyList trong Scala
Câu hỏi này đã có câu trả lời ở đây: Nhóm không bắt giữ trong biểu thức chính quy là gì? (18 câu trả lời) Tài liệu tham khảo -
Câu hỏi này dành cho hệ thống nhúng! Tôi có các tùy chọn sau để khởi tạo một đối tượng: Object* o = new Object(arg); Điều này đặt đối tượng vào heap và trả về một con trỏ đến đối tượng đó. Tôi không thích sử dụng phân bổ động trong phần mềm nhúng. Ồ
Tôi đã tự mình tìm kiếm biểu thức chính quy nhưng không thành công. Tôi có một tệp html chứa các biến từ [] đến [] và tôi muốn ghi từng từ vào đó. [tên_khách_hàng][công_ty_khách_hàng] [cl
Tôi mới làm quen với Python. Tôi không hiểu tại sao mã này không hoạt động: reOptions = re.search( "[\s+@twitter\s+(?P\w+):(?P.*?)\s+]", d
Trong khoảng 7 tháng trở lại đây, tôi gần như chỉ lập trình bằng .NET C#. Trước đó, hầu hết chương trình của tôi đều được lập trình bằng C++ (tôi học ở trường). Ở chỗ làm, có lẽ tôi sẽ phải làm rất nhiều bài tập về C trong vài tháng tới. Ý kiến của tôi về C
Tôi mới biết đến RE và tôi đang cố gắng lấy lời bài hát và tách tiêu đề, điệp khúc và giọng hát chính: Sau đây là một số ví dụ về lời bài hát: [Intro] DA got that dope! [Chorus: Travis Scott] Ic
Điều này có thể không khả thi, nhưng tôi muốn kiểm tra xem tôi có thể diễn đạt điều gì đó như thế này theo cách đơn giản hay không: // rõ ràng là không hiệu quả class Foo : IFoo where T: Bar {
Chúng tôi có các thực thể "người dùng" và "nghiên cứu" trong ứng dụng, được lưu trữ trong các bảng riêng của chúng. Nghiên cứu đại diện cho một loại nghiên cứu và dữ liệu đã được thu thập. Chúng là mối quan hệ nhiều-nhiều, vì vậy chúng ta cần một bảng liên kết: studies_users. Chúng tôi chỉ định vai trò cho người dùng
Khi bạn thêm các điều kiện kiểm tra vào đơn vị kiểm tra cơ sở dữ liệu Visual Studio 2010 (dành cho SQL Server 2008), các điều kiện sẽ được gọi, ví dụ: rowCountCondition1, rowCountCondition2 và rowCountCondition3.
Trên trình giả lập, tôi có thể ngắt kết nối thẻ SD khỏi phần cài đặt. Sau đó tôi có thể cài đặt nó vào hệ điều hành của mình và gỡ cài đặt như bình thường. Tôi vẫn chưa tìm ra cách cài đặt lại nó trên trình giả lập (mà không cần khởi động lại). Mẹo: lệnh adb remount vô dụng
Giả sử một loạt các cam kết đã được thực hiện trên một nhánh, nhưng nhánh đó vẫn chưa được đồng bộ hóa lại với trunk. Có thể tạo bản vá toàn cầu từ một cam kết không? Có thể tạo bản vá "nhóm" từ một loạt các cam kết không? Nếu có thì bằng cách nào? Câu trả lời hay nhất svn diff -rXXX:YYY UR
Tôi muốn khóa chức năng thay đổi kích thước trong ứng dụng của mình trong một số trường hợp nhất định, vì vậy tôi đã thử liên kết dữ liệu với thuộc tính và không cho phép thay đổi nó trong một số trường hợp nhưng không thành công. Có cách nào để thực hiện việc này không? Đây là nỗ lực không thành công của tôi: XAML: Vie
Khi tôi có nhiều màn hình được kết nối với máy tính, tôi có thể phát hiện chúng và vẽ đồ họa cho chúng bằng cách đặt vị trí dựa trên các giá trị thu được từ get(0, 'MonitorPositions') Tuy nhiên, khi tôi ngắt kết nối màn hình trong khi MATLAB đang chạy, thuộc tính này không
Chúng tôi có một ứng dụng grails lưu trữ nhiều đối tượng miền khác nhau trong cơ sở dữ liệu grails. Ứng dụng kết nối với cơ sở dữ liệu thứ hai, chạy một số lệnh SQL thô và hiển thị kết quả trong bảng. Về cơ bản, đây là một máy chủ báo cáo. Chúng tôi sử dụng DataSo
Các trình lặp từ các vùng chứa khác nhau không thể được so sánh (xem ví dụ tại đây: https://stackoverflow.com/a/4664519/225186 ) (hoặc về mặt kỹ thuật, nó không cần phải có ý nghĩa.) Điều này đặt ra một câu hỏi khác, từ
Tôi có tình huống sau: Hoạt động cha: ParentActivityClass { private Intent intent; @Override public void onCreate(Bu
Tôi thường móc các phần tử có chức năng bổ sung, ví dụ: $('.myfav').autocomplete(); $('.myfav').datepicker(); $('.myfav').click(somefu
Vì vậy, tôi đang sử dụng thư viện tooltipster.js cho chú giải công cụ và cố gắng thay đổi khoảng cách mặc định của chú giải công cụ trên các kích thước màn hình khác nhau. Đây là giao diện mặc định của init: $(inputTooltipTrigger).tool
Tôi đang làm việc trong môi trường nhúng ARM7. Trình biên dịch tôi đang sử dụng không hỗ trợ đầy đủ các tính năng của C++. Một tính năng mà nó không hỗ trợ là chuyển đổi kiểu động. Có cách nào để triển khai dynamic_cast<>() không? Tôi đã sử dụng Google để tìm kiếm mã, nhưng tôi không thể tìm thấy
Tôi là một lập trình viên xuất sắc, rất giỏi!