我有一个包含三行代码的文本文件。 也就是说,
您好。 请问有什么可以帮你? 我今天能为你做些什么?
我尝试打印第一行并且它有效。现在我想在控制台中打印其余的行,但它只显示第一行4次。
您好。 你好。 你好。 你好。
以下是我尝试运行的代码,该文件位于根文件夹中。
public class Test
{
public static void main(String[] args)
{
int counter = 0;
/*open the file */
BufferedReader reader = null;
String greeting = null;
int rand;
File file = new File("Greetings.txt");
try
{
reader = new BufferedReader(new FileReader(file));
/*read the file*/
String greetingPicker = null;
/*single greeting*/
/*greeting = greetingPicker;*/
List<String> listOfGreetings = new ArrayList<String>();
while ((greetingPicker = reader.readLine()) != null)
{
listOfGreetings.add(greetingPicker);
}
reader.close();
rand = (int) Math.random() * (listOfGreetings.size()) + 1;
greeting = listOfGreetings.get(rand - 1);
for (int i = 0; i < listOfGreetings.size(); i++)
{
System.out.println(listOfGreetings.get(counter));
}
} catch (Exception e)
{
System.out.println("File cannot be found!!");
}
}
}
答案 0 :(得分:4)
您获得了错误索引的值:您在循环中错误地使用了position: relative
而不是top
。改变这个
counter
到此:
i
顺便说一下,您正在使用for(int i=0; i < listOfGreetings.size(); i++){
System.out.println(listOfGreetings.get(counter));
}
,它会立即转换为for(int i=0; i < listOfGreetings.size(); i++){
System.out.println(listOfGreetings.get(i));
}
,因为您忘记添加正确的括号,因此请更改此
Math.random()
到此:
int
答案 1 :(得分:2)
你不需要你的柜台,使用我! ;)
for(int i=0; i < listOfGreetings.size();i++){
System.out.println(listOfGreetings.get(i));
}
答案 2 :(得分:2)
只需更改
System.out.println(listOfGreetings.get(counter));
通过
System.out.println(listOfGreetings.get(i));
你忘了换柜台了。
答案 3 :(得分:1)
你不需要使用计数器,最后就像这样:
for(int i=0; i < listOfGreetings.size();i++){
System.out.println(listOfGreetings.get(i));
}
reader.close();
答案 4 :(得分:1)
此处的“计数器”变量未递增:
function Test-PipelineStuff
{
[cmdletbinding()]
Param(
[Parameter(ValueFromPipeLine=$true)][int]$Foo,
[Parameter(ValueFromPipeLine=$true)][int]$MaxMins
)
begin {
"THE START"
$StartTime = Get-Date
$StopTime = (get-date).AddMinutes($MaxMins)
"Stop time is: $StopTime"
# Embedded cleanup function.
function clean-up {
"THE END"
}
}
process
{
$currTime = Get-Date
if( $currTime -lt $StopTime ){
"Processing $Foo"
}
else {
# Call the cleanup function just before stopping the pipeline.
clean-up
continue;
}
}
end {
# Normal termination: call the cleanup function.
clean-up
}
}
您应该将其更改为“i”:
for(int i=0; i < listOfGreetings.size();i++){
System.out.println(listOfGreetings.get(counter));
}
答案 5 :(得分:0)
尝试使用下面的块。它更简单,效果更好。
import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;
public class FileReader{
public static void main(String[] args){
//define file path
String stringFileToRead = "Greetings.txt";
//the file
File stringFile = new File(stringFileToRead);
//Scanner object to take input from the file
Scanner fileToRead = null;
try{
//Read the file
fileToRead = new Scanner(stringFile);
}
//catch exception
catch (Exception e){
System.out.println("Unable to open file.");
System.exit(0);
}
//print the content of the file
System.out.println("The file contains the following contents:\n");
int lineNum = 1;
while(fileToRead.hasNextLine()){
String line = fileToRead.nextLine();
System.out.println("Line "+lineNum+": "+line);
lineNum++;
}
}
}