PDA

View Full Version : پیدا کردن هر خط از فایل



yegane8
چهارشنبه 04 مرداد 1391, 01:04 صبح
سلام
من یک کلاس دارم در این کلاس با زدن یک باتن مثلا عدد 2 فرستاده میشه به یک کلاس دیگر
حالا وظیفه این کلاس اینه که بره خط 2 رو از یک فایل مشخص پیدا کنه و بریزه تو یه string
حالا چطوری باید یه خط رو با استفاده از شماره اوون خط پیدا کرد؟
باتشکر

spiderman200700
چهارشنبه 04 مرداد 1391, 01:23 صبح
سلام.
باید یه شمارنده داشته باشی که با خوندن هر خط از فایل این شمارنده یکی اضافه میشه.باید هر دفعه هم که شمارنده یکی اضافه میشه بیای چک کنی که آیا شمارنده برابر با شماره خط درخواست شده (مثلا 2)هست یا نه.
اگه شمارنده برابر با شماره خط درخواست شده (مثلا 2) شده بود، خط خوانده شده ی فعلی همون خط مورد نظره.

yegane8
چهارشنبه 04 مرداد 1391, 01:33 صبح
ممنون
حالا توی این قسمت برای اینکه هر شماره رو بریزم تو یکی تز خونه های int[] answers چه مشکلی هست؟
private int[] answers;

}
public void readAnswer() throws FileNotFoundException, IOException{
Scanner input = new Scanner(new File("answers.txt"));
int counter=0;
while (input.hasNextLine()) {
counter++;
if(counter==LineCount){
answers = input.nextLine().split(",");//values separate by
}

}
input.close();


}
فک کنم این خط answers = input.nextLine().split(",");//values separate by مورد داره اما نمی دونم باید چطوری تغییرش بدهم
باتشکر

yegane8
چهارشنبه 04 مرداد 1391, 01:56 صبح
البته LineCount همون ارگومان ارسال شده است
و error اش اینه که answer رو string تبدیل کن اما من می خواهم int باشد
باید چی کار کنم
باتشکر

yegane8
چهارشنبه 04 مرداد 1391, 05:03 صبح
سلام
الان مشکل این برنامه چیه؟
من می خواهم هر جا که کاربر پاسخ درست داد چاپ شه جواب سوال مثلا دوم را درست دادید
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Scanner;
import javax.swing.*;

public class RadioButton extends JFrame {

private int[] userAnswer;
private String[] answers;
private String[] x;
private static int lineCount;
private ArrayList<ButtonGroup> buttonGroupsList;

public RadioButton(int CountLine) {
super("RadioButton");
this.lineCount = CountLine;
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new FlowLayout());
setSize(350, 560);
setResizable(true);
setframe();
}

private void setframe() {
buttonGroupsList = new ArrayList<ButtonGroup>();
for (int i = 0; i < 10; i++) {
ButtonGroup buttonGroup = new ButtonGroup();
for (int j = 1; j < 5; j++) {
JRadioButton rb = new JRadioButton("Word" + j);
buttonGroup.add(rb);
add(rb);
}
buttonGroupsList.add(buttonGroup);
JSeparator jSeparator = new JSeparator();
jSeparator.setPreferredSize(new Dimension(400, 20));
add(jSeparator);
}
setVisible(true);

JButton check_btn = new JButton("check");
check_btn.setLocation(500, 400);
add(check_btn);
check_btn.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

userAnswer = new int[buttonGroupsList.size()];
for (int i = 0; i < userAnswer.length; i++) {
userAnswer[i] = -1;
}
int i = 0;
for (ButtonGroup bg : buttonGroupsList) {
Enumeration<AbstractButton> rbs = bg.getElements();
int j = 1;
while (rbs.hasMoreElements()) {
JRadioButton rb = (JRadioButton) rbs.nextElement();
if (rb.isSelected()) {
userAnswer[i] = j;
System.out.println(j);
}
j++;
}
i++;
}
}
});

x = new String[10];
x =this.readAnswer();
for(int n=0;n<10;n++)
if(String.valueOf(userAnswer[n]).equals(x[n])){
System.out.println("you answer "+n+"th question right");
}
}
public String[] readAnswer(){
Scanner input = null ;
String line;
try {
input = new Scanner(new File("answers.txt"));
} catch (FileNotFoundException ex) {
ex.printStackTrace();
}
int counter=0;
int i=0;
while (input.hasNextLine()) {
counter++;
if(counter==lineCount){
line = input.nextLine();
Scanner data = new Scanner(line);
while(data.hasNext()){
answers[i]=data.next();
i++;
}


}

}
input.close();
return answers;
}

public static void main(String args[]) {
new RadioButton(lineCount);
}
}
باتشکر

yegane8
پنج شنبه 05 مرداد 1391, 18:23 عصر
سلام
برنامه رو اینطوری تغییر دادم وقتی دستی run میکنم به نظرم همه چی درست میاد ولی وقتی اجراش میکنم و وقتی button مورد نظر رو می زنم تا به این قسمت از برنامه بیام انگار برنامه قفل میکند و فرم هم یا سیاه میشه یا اصلا فرم نشون داده نمیشه (از خط 74 به بعد رو تغییر دادم)
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Scanner;
import javax.swing.*;

public class RadioButton extends JFrame {

private int[] userAnswer;
private int[] ans;
private String[] answers;
private int[] ansConvert;
private static int lineCount;
private ArrayList<ButtonGroup> buttonGroupsList;

public RadioButton(int CountLine) {
super("RadioButton");
this.lineCount = CountLine;
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new FlowLayout());
setSize(350, 560);
setResizable(true);
readAnswer();
setframe();
}

private void setframe() {
buttonGroupsList = new ArrayList<ButtonGroup>();
for (int i = 0; i < 10; i++) {
ButtonGroup buttonGroup = new ButtonGroup();
for (int j = 1; j < 5; j++) {
JRadioButton rb = new JRadioButton("Word" + j);
buttonGroup.add(rb);
add(rb);
}
buttonGroupsList.add(buttonGroup);
JSeparator jSeparator = new JSeparator();
jSeparator.setPreferredSize(new Dimension(400, 20));
add(jSeparator);
}
setVisible(true);

JButton check_btn = new JButton("check");
check_btn.setLocation(500, 400);
add(check_btn);
check_btn.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

userAnswer = new int[buttonGroupsList.size()];
for (int i = 0; i < userAnswer.length; i++) {
userAnswer[i] = -1;
}
int i = 0;
for (ButtonGroup bg : buttonGroupsList) {
Enumeration<AbstractButton> rbs = bg.getElements();
int j = 1;
while (rbs.hasMoreElements()) {
JRadioButton rb = (JRadioButton) rbs.nextElement();
if (rb.isSelected()) {
userAnswer[i] = j;
System.out.println(j);
}
j++;
}
i++;
}


ansConvert = new int[10];
ansConvert = this.readAnswer();
int percent=0;
for (int n = 0; n <= ansConvert.length-1; n++) {
if (ansConvert[n] == userAnswer[n]) {
percent++;
}
}
System.out.println(percent);

} }
});
public int[] readAnswer(){
Scanner input = null ;
String line;
ans = new int[10];
try {
input = new Scanner(new File("answers.txt"));
} catch (FileNotFoundException ex) {
ex.printStackTrace();
}
int counter=0;
int i=0;
while (input.hasNextLine()){

counter++;
if(counter==lineCount){
line = input.nextLine();
Scanner data = new Scanner(line);
while(data.hasNextInt()){
ans[i] = data.nextInt();
i++;
}
}

}
input.close();
return ans;
}

public static void main(String args[]) {
new RadioButton(lineCount);
}
}
مشکل از کجاست ؟
باتشکر