-2
これは1つのコードファイルです(これはエラーの箇所ですが間違いかもしれません)実行時エラーは、このファイルにある "年:"を記述します。ここでは完全なエラーです。スレッドの例外 "AWT-EventQueueの-0" java.lang.NumberFormatException:入力文字列の場合: "年:" ここにスレッド「AWT-EventQueue-0」で例外が発生しています。java.lang.NumberFormatException:入力文字列:「年」:
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
/**
A frame that shows the growth of an investment with variable interest,
using a bar chart.
*/
public class InvestmentFrame4 extends JFrame
{
private static final int FRAME_WIDTH = 400;
private static final int FRAME_HEIGHT = 400;
private static final int CHART_WIDTH = 300;
private static final int CHART_HEIGHT = 300;
private static final double DEFAULT_RATE = 5;
private static final double INITIAL_BALANCE = 1000;
private JLabel rateLabelInitialInvestment;
private JLabel rateLabelInterestRate;
private JLabel rateLabelYears;
private JTextField rateFieldInitialInvestment;
private JTextField rateFieldInterestRate;
private JTextField rateFieldYears;
private JButton button;
private ChartComponent chart;
private double balance;
public InvestmentFrame4()
{
// balance = Double.parseDouble(rateLabelInitialInvestment.getText());
chart = new ChartComponent(3 * INITIAL_BALANCE);
chart.setPreferredSize(new Dimension(CHART_WIDTH, CHART_HEIGHT));
chart.append(INITIAL_BALANCE);
createInterestRateTextField();
createInitialInvestmentTextField();
createYearsTextField();
createButton();
createPanel();
setSize(FRAME_WIDTH, FRAME_HEIGHT);
}
private void createInterestRateTextField()
{
rateLabelInterestRate = new JLabel("Interest Rate: ");
final int FIELD_WIDTH = 25;
rateFieldInterestRate = new JTextField(FIELD_WIDTH);
rateFieldInterestRate.setText("" + DEFAULT_RATE);
}
private void createInitialInvestmentTextField()
{
rateLabelInitialInvestment = new JLabel("Initial Investment: ");
final int FIELD_WIDTH = 20;
rateFieldInitialInvestment = new JTextField(FIELD_WIDTH);
rateFieldInitialInvestment.setText("" + DEFAULT_RATE);
}
private void createYearsTextField()
{
rateLabelYears = new JLabel("Years: ");
final int FIELD_WIDTH = 20;
rateFieldYears = new JTextField(FIELD_WIDTH);
rateFieldYears.setText("" + DEFAULT_RATE);
}
class AddInterestListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
for(int i = 1; i < Integer.parseInt(rateLabelYears.getText().trim()); i++)
{
balance = Double.parseDouble(rateLabelInitialInvestment.getText()) * Math.pow(1.0 + Double.parseDouble(rateLabelInterestRate.getText()), Integer.parseInt(rateFieldYears.getText()));
}
}
}
private void createButton()
{
button = new JButton("Compound Interest");
ActionListener listener = new AddInterestListener();
button.addActionListener(listener);
}
private void createPanel()
{
JPanel panel = new JPanel();
panel.add(rateLabelInitialInvestment);
panel.add(rateFieldInitialInvestment);
panel.add(rateLabelInterestRate);
panel.add(rateFieldInterestRate);
panel.add(rateLabelYears);
panel.add(rateFieldYears);
panel.add(button);
panel.add(chart);
add(panel);
}
}
は別のファイル
public class ChartComponent extends JComponent
{
private ArrayList<Double> values;
private double maxValue;
public ChartComponent(double max)
{
values = new ArrayList<Double>();
maxValue = max;
}
public void append(double value)
{
values.add(value);
repaint();
}
public void paintComponent(Graphics g)
{
final int GAP = 5;
final int BAR_HEIGHT = 10;
int y = GAP;
for (double value : values)
{
int barWidth = (int) (getWidth() * value/maxValue);
g.fillRect(0, y, barWidth, BAR_HEIGHT);
y = y + BAR_HEIGHT + GAP;
}
}
}
です最後にメイン
import javax.swing.JFrame;
/**
This program displays the growth of an investment, showing
a bar chart.
*/
public class InvestmentViewer4
{
public static void main(String[] args)
{
JFrame frame = new InvestmentFrame4();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
誰かが私はそれが大幅に評価される実行時エラーが発生していることを説明してくださいことができる場合!
ようこそ!デバッガの使い方を学ぶ必要があるようです。 [補完的なデバッグ手法](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)にご協力ください。その後も問題が残っている場合は、問題を示す[最小限の、完全で実証可能な例](http://stackoverflow.com/help/mcve)に戻ってください。 –
'Years:'は数値に変換できません...私は例外を通して実際に何が問題なのかわかりません - あなたは 'java.lang.NumberFormatException'の検索を試みましたか? ? – MadProgrammer
エラーがあなたのforループの中にあります.1つのラベルに "years"というタイトルがあり、それをintに解析しようとしています。テキストフィールドのテキストを取得しようとしましたか? –