从包含整数的文件读取-java
我试图从包含三个数字的文件中读取。该文件如下所示:从包含整数的文件读取-java,java,arrays,file-io,Java,Arrays,File Io,我试图从包含三个数字的文件中读取。该文件如下所示: 45 20 32 我的代码如下: import java.awt.Color; import java.awt.Desktop.Action; import java.awt.GridLayout; import java.awt.Label; import java.awt.MenuItem; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; i
45
20
32
我的代码如下:
import java.awt.Color;
import java.awt.Desktop.Action;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.MenuItem;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Arrays;
import java.util.Scanner;
import javax.swing.Timer;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JSlider;
import javax.swing.border.TitledBorder;
public class practise implements ActionListener {
int menuCount = 0;
int [] fileValues = new int[3];
JFrame frame1 = new JFrame();
JPanel[] panels = new JPanel[3];
JMenuItem menuitemMyDialog1 = new JMenuItem( "Open File" );
JMenuItem menuitemMyDialog2 = new JMenuItem( "EXIT" );
JMenuBar menuBar = new JMenuBar( );
JMenu menuData = new JMenu( "Menu" );
Label label = new Label();
JSlider slider = new JSlider( JSlider.VERTICAL,0,100,20);;
Timer timer = new Timer(1000,new TimerAction());
void go(){
frame1.setTitle("Referred Coursework");
frame1.setSize(600, 300);
frame1.setVisible(true);
buildGUI();
menuitemMyDialog1.addActionListener( this );
menuData.add( menuitemMyDialog1 );
//buildGUI();
menuitemMyDialog2.addActionListener( this );
menuData.add( menuitemMyDialog2 );
menuBar.add( menuData );
frame1.setJMenuBar( menuBar );
}
int b = 0;
class TimerAction implements ActionListener{
public void actionPerformed(ActionEvent e){
if(b == 3){ timer.stop(); }
slider.setValue(fileValues[b]);
b++;
}
}
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
if(arg0.getSource() == menuitemMyDialog1){
menuCount = 1;
String inputValue = JOptionPane.showInputDialog("File Open dialog box");
label.setSize(80,80);
label.setText(inputValue);
label.setLocation(40,160);
//fileValues[1] = 27; fileValues[0] = 2; fileValues[2] = 62;
try {
FileReader file = new FileReader("temperature.txt");
BufferedReader buf = new BufferedReader(file);
int i = 0;
String s = null;
while((s = buf.readLine()) != null){
fileValues[i] = Integer.parseInt(s);
i++;
}
}catch (Exception e){e.printStackTrace();}
Arrays.sort(fileValues);
for (int i : fileValues){
System.out.println(i);
}
timer.start();
}
if(arg0.getSource() == menuitemMyDialog2){
frame1.dispose();
System.exit(0);
}
}
public void buildGUI(){
layoutComponents();
}
public void layoutComponents(){
JLabel label1 = new JLabel();
JSlider slider2,slider3;
//JProgressBar bar = new JProgressBar( JProgressBar.VERTICAL,1000, 1020 );
panels[0] = new JPanel();
panels[1] = new JPanel();
panels[2] = new JPanel();
panels[1].setBorder( new TitledBorder( "Temperature" ) );
slider.setMajorTickSpacing(20);
slider.setPaintTicks( true );
slider.setPaintLabels( true );
slider.setMinorTickSpacing(10);
panels[1].add( slider );
panels[1].setBackground(Color.orange);
frame1.setLayout( new GridLayout( 1,2 ) );
for ( int i = 0; i < panels.length;i++ ){
frame1.add( panels[i] );
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
practise obj = new practise();
obj.go();
}
导入java.awt.Color;
导入java.awt.Desktop.Action;
导入java.awt.GridLayout;
导入java.awt.Label;
导入java.awt.MenuItem;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.io.BufferedReader;
导入java.io.File;
导入java.io.FileNotFoundException;
导入java.io.FileReader;
导入java.io.IOException;
导入java.util.array;
导入java.util.Scanner;
导入javax.swing.Timer;
导入javax.swing.JFrame;
导入javax.swing.JLabel;
导入javax.swing.JMenu;
导入javax.swing.JMenuBar;
导入javax.swing.JMenuItem;
导入javax.swing.JOptionPane;
导入javax.swing.JPanel;
导入javax.swing.JProgressBar;
导入javax.swing.JSlider;
导入javax.swing.border.TitledBorder;
公共课堂练习实施ActionListener{
int menuCount=0;
int[]fileValues=新的int[3];
JFrame frame1=新JFrame();
JPanel[]面板=新JPanel[3];
JMenuItem menuitemMyDialog1=新的JMenuItem(“打开文件”);
JMenuItem menuitemMyDialog2=新的JMenuItem(“退出”);
JMenuBar menuBar=newjmenubar();
JMenu menuData=新JMenu(“菜单”);
标签=新标签();
JSlider滑块=新JSlider(JSlider.VERTICAL,0100,20);;
定时器=新定时器(1000,new TimerAction());
void go(){
框架1.课程名称(“参考课程”);
框架1.设置大小(600300);
frame1.setVisible(true);
buildGUI();
menuitemydialog1.addActionListener(此);
menuData.add(menuitemydialog1);
//buildGUI();
menuitemydialog2.addActionListener(此);
menuData.add(menuitemydialog2);
menuBar.add(menuData);
frame1.setJMenuBar(菜单栏);
}
int b=0;
类TimerAction实现ActionListener{
已执行的公共无效操作(操作事件e){
如果(b==3){timer.stop();}
slider.setValue(fileValues[b]);
b++;
}
}
@凌驾
已执行的公共无效操作(操作事件arg0){
//TODO自动生成的方法存根
如果(arg0.getSource()==menuitemMyDialog1){
menuCount=1;
String inputValue=JOptionPane.showInputDialog(“文件打开对话框”);
标签。设置尺寸(80,80);
label.setText(inputValue);
标签设置位置(40160);
//fileValues[1]=27;fileValues[0]=2;fileValues[2]=62;
试一试{
FileReader文件=新的FileReader(“temperature.txt”);
BufferedReader buf=新的BufferedReader(文件);
int i=0;
字符串s=null;
而((s=buf.readLine())!=null){
fileValues[i]=整数.parseInt;
i++;
}
}catch(异常e){e.printStackTrace();}
Arrays.sort(filevalue);
for(inti:fileValues){
系统输出打印LN(i);
}
timer.start();
}
如果(arg0.getSource()==menuitemMyDialog2){
frame1.dispose();
系统出口(0);
}
}
public void buildGUI(){
布局组件();
}
公共void布局组件(){
JLabel label1=新的JLabel();
JSlider滑块2、滑块3;
//JProgressBar=新的JProgressBar(JProgressBar.VERTICAL,10001020);
panels[0]=新的JPanel();
面板[1]=新的JPanel();
面板[2]=新的JPanel();
面板[1]。订单(新标题边框(“温度”));
滑块。设置主轨迹间距(20);
slider.setPaintTicks(真);
slider.setPaintLabels(true);
滑块。设置MinortickSpacing(10);
面板[1]。添加(滑块);
面板[1]。背景(颜色为橙色);
框架1.setLayout(新的GridLayout(1,2));
对于(int i=0;i
}
程序编译正常,没有错误。但当我输出数组文件值的内容时,我得到:
0
0
0
任何帮助都将不胜感激。谢谢
更新我查看了FileReader的异常,现在它显示了FileNotFoundException。这很奇怪,因为该文件存在于项目文件夹中。任何建议???您需要提供“temperature.txt”的完整路径 忽略I/O操作发送的异常:
try {
FileReader file = new FileReader("temperature.txt");
BufferedReader buf = new BufferedReader(file);
int i = 0;
String s = null;
while ((s = buf.readLine()) != null) {
fileValues[i] = Integer.parseInt(s);
i++;
}
} catch (Exception e) {
}
如果用以下方式替换挡块:
} catch (Exception e) {
System.out.println(e.getMessage());
}
您应该会得到一条不言自明的消息。使用scanner类检查文件值在哪里声明和初始化?看起来对我来说应该有用,问题可能出在您没有发布的代码中。我猜fileValues已初始化为0的数组,而无论出于何种原因,它都没有填充解析结果。。完整的代码…当使用完整的路径时,它能工作吗?您是否尝试过一步一步地调试以查看出现了什么问题?您确实看到了0正确的输出?只有一个地方可以打印阵列?我不知道如何正确打印。我正在Eclipse上运行代码您需要在filereader行上设置一个断点,并在调试模式下运行您的程序(有关更多详细信息=>google)。这会帮助你找到问题所在。祝你好运谢谢你的帮助!我试过调试器。它给出了文件未找到异常。它没有像我运行程序时那样给出它。然而,奇怪的是,即使在我使用文件的完整路径时,它也会给出这个错误。