このプログラムでは、売上を入力し、州ごとの売上税を計算することができます。 ダブルワード状態(例えばニュージャージー州)を読み込むと、プログラムはエラーを出しています。私はheloとpartが必要です。文字列トークナイザを使用して状態名を読み込もうとするとエラーが発生する
import java.text.DecimalFormat;
import java.util.*;
import java.io.*;
import java.lang.reflect.Array;
import java.nio.CharBuffer;
import java.awt.*;
//import java.awt.event.*;
import javax.lang.model.type.ArrayType;
import javax.swing.*;
import javax.swing.event.*;
public class PJ5 extends JFrame implements ListSelectionListener
{String []States = new String[100];
double []statetax = new double[100];
double sales;
JPanel p1;
JList StateList;
JTextField salesField;
private JTextField taxField;
public static void main(String []args)
{
PJ5 x = new PJ5();
x.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
x.setTitle("Sales tax calculator");
x.setSize(350, 250);
x.setVisible(true);
} // main
public PJ5() // constructor
{
String s;
StringTokenizer st;
int k=0;
try
{
BufferedReader inFile = new BufferedReader(new FileReader("C:\\Users\\Owner\\Documents\\taxrates.txt"));
while ((s= inFile.readLine()) != null)
{
st = new StringTokenizer(s);
States[k]=(st.nextToken());
statetax[k] = Double.valueOf(st.nextToken());
++k;
} // while not EOF
inFile.close();
} catch (Exception e) { System.err.println(e); }
JPanel p1 =new JPanel();
p1.setLayout(new GridLayout(2,1));
p1.add(new JLabel("Sales amount:"));
salesField= new JTextField(5);
salesField.setEditable(true);
p1.add(salesField);
p1.add(new JLabel("tax:"));
taxField= new JTextField(4);
taxField.setEditable(false);
p1.add(taxField);
add(p1,BorderLayout.NORTH);
pack();
setVisible(true);
JPanel p = new JPanel();
StateList = new JList(States); // create a JList object
StateList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
JScrollPane sp = new JScrollPane(StateList); // adding scrolling capability
p.add(sp);
getContentPane().add(p, BorderLayout.SOUTH);
// Event registration
StateList.addListSelectionListener(this);
} // constructor
// Event handling
public void valueChanged(ListSelectionEvent event)
{
DecimalFormat dollar = new DecimalFormat("0.00");
double tax;
sales=Double.parseDouble(salesField.getText());
tax=sales* (statetax[StateList.getSelectedIndex()]/100);
taxField.setText("$"+dollar.format(tax));
} // valueChanged
}
ここに、州と税率のテキストファイルがあります。
Alabama 4.0
Alaska 0.
Arizona 5.6
Arkansas 6.0
California 8.25
Colorado 2.9
Connecticut 6.0
Delaware 2.07
Florida 6.0
Georgia 4.0
Hawaii 4.0
Idaho 6.0
Illinois 6.25
Indiana 7.0
Iowa 6.0
Kansas 5.3
Kentucky 6.0
Louisian, 4.0
Maine 5.0
Maryland 6.0
Massachusetts 6.25
Michigan 6.0
Minnesota 6.875
Mississippi 7.0
Missouri 4.225
Montana 0.
Nebraska 5.5
Nevada 6.85
New Hampshire 0.0
New Jersey 7.0
New Mexico 5.375
New York 4.0
North Carolina 4.5
North Dakota 5.0
Ohio 5.5
Oklahoma 4.5
Oregon 0.
Pennsylvania 6.0
Rhode Island 7.0
South Carolina 6.0
South Dakota 4.0
Tennessee 7.0
Texas 6.25
Utah 5.95
Vermont 6.0
Virginia 5.0
West Virginia 6.0
Wisconsin 5.0
Washington 6.5
Washington DC 5.75
Wyoming 4.0
あなたのコードを再構築する必要があるかもしれないエラーとは何ですか? – Mob
java.lang.NumberFormatException:入力文字列: "Hampshire" – Angel918