Java 当我的编译器告诉我I';我在使用不安全或未经检查的操作?

Java 当我的编译器告诉我I';我在使用不安全或未经检查的操作?,java,compiler-construction,unchecked,Java,Compiler Construction,Unchecked,我的程序编译得很好,但我的控制台显示了以下内容: ----jGRASP exec: javac -g CreditGraphics.java Note: CreditGraphics.java uses unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details. ----jGRASP: operation complete. 首先,是什么使操作不安全?一个过程怎么能被“取消检查”?

我的程序编译得很好,但我的控制台显示了以下内容:

 ----jGRASP exec: javac -g CreditGraphics.java

Note: CreditGraphics.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

 ----jGRASP: operation complete.
首先,是什么使操作不安全?一个过程怎么能被“取消检查”?“使用-Xlint重新编译”是什么意思?我使用的是jGrasp,我不确定这是一个按钮还是某种命令?我想看看细节。它没有指定什么是不安全的或未检查的,但下面是我的代码:

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import java.util.Scanner;
import java.util.Arrays;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.*;
import java.util.*;
import java.io.*;
import javax.mail.*;
import javax.mail.event.*;
import javax.mail.internet.*;
import javax.activation.*;
import java.util.Properties;
import javax.mail.Header;
import java.util.Enumeration;
import java.util.Properties;
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.JApplet;
import javax.mail.Authenticator;
import javax.mail.Folder;
import javax.mail.Header;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.URLName;
import java.beans.*;
import java.util.ArrayList;
import javax.swing.SwingUtilities;
import javax.swing.filechooser.*;
import java.util.Scanner;
import java.awt.image.*;
import java.io.*;
import java.net.URL;
import javax.imageio.*;
import javax.swing.Timer;

public class CreditGraphics {

    //first screen variables
    public String cardNum;
    public JFrame frame;
    public JPanel panel;
    public JLabel label;
    public JTextField text;
    public String cardType = "";
    public String carddigits;
    public boolean cardValid;
    public int length;
    public String[] cardTypes;
    public JComboBox cardTypesDD;
    public static ArrayList<Integer> holdDigits = new ArrayList<Integer>();
    public static ArrayList<String> holdDigitsChar = new ArrayList<String>();
    public static int[] checkDigits;
    public static int checkSum = 0;

    //second screen variables in verifyScreen;
    public JFrame vframe;
    public JPanel vpanel;
    public JLabel titlelabel;
    public GridBagConstraints grid;
    public JLabel namelabel;
    public JTextField namefield;

    public CreditGraphics() {

        frame = new JFrame("MES Banking App");
        panel = new JPanel();
        label = new JLabel();
        cardTypes = new String[4];
        cardTypes[0] = "Visa";
        cardTypes[1] = "American Express";
        cardTypes[2] = "Master Card";
        cardTypes[3] = "";
        cardTypesDD = new JComboBox(cardTypes);
        cardTypesDD.setSelectedIndex(3);

        text = new JTextField(16);

        panel.add(label);
        panel.add(cardTypesDD);
        panel.add(text);

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        panel.setPreferredSize(new Dimension(500, 500));
        frame.getContentPane().add(panel);

        frame.pack();
        frame.setVisible(true);

        label.setText("<html>Please enter your credit card <br> 'Master Card' 'Visa' or 'American Express'</html>");

        text.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                        //after CC type is entered, prompt user to enter digits
                        carddigits = text.getText();//gets credit card number from jtextfield
                        length = carddigits.length();//sets length of card
                        validateCard(); //uses credit card number and length to determine if it matches up to brand

                        //below returns if card is valid
                        if (cardValid == true) {
                            label.setText("Card brand is valid");
                        }
                        waits(1);

                        text.setText("");

                        waits(1);
                        checkDigits();

                    }

                });

        cardTypesDD.addActionListener( new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                        //where program really starts
                        while (cardTypesDD.getSelectedIndex() == 3) {
                            label.setText("First, please select a card type from DD list");
                        }

                        cardType = (String) cardTypesDD.getSelectedItem();
                        System.out.println(cardType);

                        if (!cardType.equals("")) {
                            label.setText("Thank you, now please enter your card #");
                        }
                        //now go to the jtextfield actionlistener
                    }});
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(
                new Runnable() {
                    public void run() {

                        new CreditGraphics();

                    }});
    }

    public void verifyScreen() {
        //destroy old frame
        frame.dispose();

        //create new frame essentially same as last frame
        vframe = new JFrame("MES Banking App");
        vpanel = new JPanel();
        titlelabel = new JLabel("Verification Page");
        namelabel = new JLabel("Name: ");
        namefield = new JTextField(20);
        //title section
        vpanel.setLayout(new GridBagLayout());
        grid = new GridBagConstraints();
        grid.fill = GridBagConstraints.PAGE_START;
        grid.weightx = 0;
        grid.gridx = 0;
        grid.gridy = 0;
        vpanel.add(titlelabel, grid);

        //name section
        grid.gridy = 1;
        grid.insets = new Insets(10, 0, 0, 0);
        vpanel.add(namelabel, grid);
        grid.gridx = 1;
        grid.insets = new Insets(10, 10, 0, 0);
        vpanel.add(namefield, grid);

        vframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        vframe.getContentPane().add(vpanel);

        vframe.pack();
        vframe.setVisible(true);
    }

    public static void waits(int k) {
        long time0, time1;
        time0 = System.currentTimeMillis();
        do {
            time1 = System.currentTimeMillis();
        } while ((time1 - time0) < k * 1000);
    }

    public void validateCard() {
        //check brand

        cardValid = false;
        if ((cardType.equals("Visa") && carddigits.substring(0, 1).equals("4")) && (length == 13 || length == 16)) {
            label.setText("Thank you, next step");

            cardValid = true;
        }

        if ((cardType.equals("Master Card")) && (carddigits.substring(0, 2).equals("51") || carddigits.substring(0, 2).equals("52") || carddigits.substring(0, 2).equals("53") || carddigits.substring(0, 2).equals("54") || carddigits.substring(0, 2).equals("55")) && (length == 16)) {
            label.setText("Thank you, next step");
            cardValid = true;
        }

        if ((cardType.equals("American Express") && carddigits.substring(0, 2).equals("37") && length == 15)) {
            label.setText("Thank you, next step");
            cardValid = true;
        }

        if (cardValid != true) {
            System.out.println("ERROR");
            label.setText("ERROR");
            waits(2);
            System.exit(0);
        }
        //end check
    }

    public void checkDigits() {
        label.setText("Checking digits using Luhn's algorithm...");
        waits(2);
        //check digits
        checkDigits = new int[length];
        for (int i = 0; i < length; i++) {
            checkDigits[i] = Integer.parseInt(carddigits.substring(i, i + 1));

            //successfully puts digits into array
        }
        for (int e = length - 2; e >= 0; e -= 2) {
            checkDigits[e] = 2 * checkDigits[e];
        }
        for (int d = 0; d < length; d++) {
            holdDigitsChar.add(String.valueOf(checkDigits[d]));
        }
        for (int v = 0; v < length; v++) {
            if (holdDigitsChar.get(v).length() == 2) {
                holdDigits.add(Integer.parseInt(holdDigitsChar.get(v).substring(0, 1)));
                holdDigits.add(Integer.parseInt(holdDigitsChar.get(v).substring(1, 2)));
            } else {
                holdDigits.add(Integer.parseInt(holdDigitsChar.get(v)));
            }
        }

        for (int c = 0; c < holdDigits.size(); c++) {
            checkSum += holdDigits.get(c);
        }

        System.out.println("Check sum:" + checkSum);

        if (checkSum % 10 == 0) {
            label.setText("Numbers check out, thank you");
            waits(2);
            verifyScreen();
        } else {
            System.out.println("ERROR");
            System.exit(0);
        }
    }
}
导入java.awt.Dimension;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入javax.swing.JFrame;
导入javax.swing.JLabel;
导入javax.swing.JPanel;
导入javax.swing.JTextField;
导入javax.swing.SwingUtilities;
导入java.util.Scanner;
导入java.util.array;
导入java.io.BufferedWriter;
导入java.io.File;
导入java.io.FileWriter;
导入java.io.IOException;
导入java.util.*;
导入java.util.*;
导入java.io.*;
导入javax.mail.*;
导入javax.mail.event.*;
导入javax.mail.internet.*;
导入javax.activation.*;
导入java.util.Properties;
导入javax.mail.Header;
导入java.util.Enumeration;
导入java.util.Properties;
导入java.applet.*;
导入java.awt.*;
导入java.awt.event.*;
导入java.applet.applet;
导入javax.swing.*;
导入javax.swing.event.*;
导入javax.swing.JApplet;
导入javax.mail.Authenticator;
导入javax.mail.Folder;
导入javax.mail.Header;
导入javax.mail.Message;
导入javax.mail.PasswordAuthentication;
导入javax.mail.Session;
导入javax.mail.URLName;
导入java.beans。*;
导入java.util.ArrayList;
导入javax.swing.SwingUtilities;
导入javax.swing.filechooser.*;
导入java.util.Scanner;
导入java.awt.image.*;
导入java.io.*;
导入java.net.URL;
导入javax.imageio.*;
导入javax.swing.Timer;
公共类信用图形{
//第一屏变量
公共字符串cardNum;
公共框架;
公共JPanel小组;
公共标签;
公共JTextField文本;
公共字符串cardType=“”;
公共字符串卡位;
公共布尔值有效;
公共整数长度;
公共字符串[]卡片类型;
公共JComboBox卡类型SDD;
公共静态ArrayList holdDigits=新ArrayList();
public static ArrayList holdDigitsChar=new ArrayList();
公共静态int[]校验位;
公共静态整数校验和=0;
//验证屏幕中的第二屏幕变量;
公共JFrame vframe;
公共JPanel vpanel;
公共JLabel titlelabel;
公共网格;
公共标签;
公共JTextField namefield;
公共信贷图表(){
frame=新JFrame(“MES银行应用程序”);
panel=新的JPanel();
label=新的JLabel();
cardTypes=新字符串[4];
卡片类型[0]=“Visa”;
卡片类型[1]=“美国运通”;
卡片类型[2]=“主卡”;
卡片类型[3]=“”;
cardTypesDD=新的JComboBox(cardTypes);
卡片类型SDD。设置所选索引(3);
text=新的JTextField(16);
面板。添加(标签);
面板。添加(cardTypesDD);
添加(文本);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
面板。设置首选尺寸(新尺寸(500500));
frame.getContentPane().add(面板);
frame.pack();
frame.setVisible(true);
label.setText(“请输入您的信用卡
‘万事达卡’‘Visa’或‘美国运通’”); text.addActionListener(新ActionListener(){ 已执行的公共无效操作(操作事件e){ //输入CC类型后,提示用户输入数字 carddigits=text.getText();//从jtextfield获取信用卡号码 length=carddigits.length();//设置卡的长度 validateCard();//使用信用卡号和长度来确定它是否与品牌匹配 //如果卡有效,下面返回 如果(cardValid==true){ label.setText(“卡牌有效”); } 等待(1); text.setText(“”); 等待(1); 检查数字(); } }); cardTypesDD.addActionListener(新ActionListener(){ 已执行的公共无效操作(操作事件e){ //节目真正从哪里开始 同时(cardTypesDD.getSelectedIndex()==3){ label.setText(“首先,请从DD列表中选择一种卡类型”); } cardType=(字符串)cardTypesDD.getSelectedItem(); 系统输出打印项次(卡片类型); 如果(!cardType.equals(“”){ label.setText(“谢谢您,现在请输入您的卡#”); } //现在转到jtextfield actionlistener }}); } 公共静态void main(字符串[]args){ SwingUtilities.invokeLater( 新的Runnable(){ 公开募捐{ 新的CreditGraphics(); }}); } 公共无效验证屏幕(){ //破坏旧框架 frame.dispose(); //创建与上一帧基本相同的新帧 vframe=新JFrame(“MES银行应用程序”); vpanel=新的JPanel(); 标题标签=新的JLabel(“验证页”); namelabel=新的JLabel(“名称:”); namefield=新的JTextField(20); //标题部分 setLayout(新的GridBagLayout()); grid=新的GridBagConstraints(); grid.fill=GridBagConstraints.PAGE\u开始; grid.weightx=0; grid.gridx=0; grid.gridy=0; vpanel.add(标题标签,网格); //名称部分 grid.gridy=1; grid.insets=新的插图(10
List l = new ArrayList();
List<String> l = new ArrayList<>(); //or new ArrayList<String>(); in Java < 7