我已经部分编写了一个程序,该程序应该读取城市列表的文件,确定名称最长和最短的名称,并将其输出到单独的文件中。但是,我不明白为什么从城市列表中,它没有给我最长和最短的
import java.io.*;
import java.util.Scanner;
public class testing
{
public static void main(String args[])throws IOException
{
Scanner sc = new Scanner(new File("C:/code/names.txt"));
String city="", longest="", shortest="";
int len=0, min = 0, max = 0;
while(sc.hasNext())
{
city= sc.nextLine();
len= city.length();
if(len>max)
{
max=len;
longest=city;
}
if(len<min)
{
min=len;
shortest=city;
}
}
System.out.println(longest + " is the longest name.");
System.out.println(shortest + " is the shortest name.");
}
}
文本文件中的城市列表为亚历山大、弗吉尼亚、奥罗拉、伊利诺伊、奥斯汀、基尼尼克、德克萨斯、波士顿、马萨诸塞州、钱德勒、亚利桑那、夏洛特、北卡罗来纳、达拉斯、代顿、俄亥俄、伊丽莎白、新泽西、尤金、俄勒冈、吉尔伯特、休斯顿、 jackson 、密西西比和格莱内尔格,我总是得到最长的输出是马萨诸塞州,最短的输出是空白/无,这是不正确的。我还想知道如何/在哪里可以将这段代码合并到我的代码中
import java.io.*;
import java.util.Scanner;
public class palindrome_demo
{
public static void main(String args[]) throws IOException
{
String s="";
Scanner sc= new Scanner(new File("c:/code/names.txt"));
while(sc.hasNextLine())
{
String word = sc.nextLine();
for(int i = word.length() - 1; i >= 0; i--)
{
s = s + word.charAt(i);
}
if (word.equalsIgnoreCase(s))
{
System.out.println(word + " is a palindrome");
}
s="";
}
sc.close();
}
}
它完美地找到文件中的回文,但我不确定将其放置在哪里而不使其无限循环。
TLDR;从文件读取时,我的代码没有给出正确的最长和最短单词,我想知道在哪里可以将单独的代码放入我的第一个代码中,以便它们可以一起运行。最后,我还想将所有这些信息(最长、最短和回文词)输出到一个单独的txt,但我不知道如何。
*编辑:anupamD 的响应帮助解决了我的字符串读取问题。我仍然想知道我可以将回文代码放在长度代码中的哪里。
最佳答案
因为这段代码:
int len=0, min = 0, max = 0;
.
.
if(len<min) { min=len; shortest=city; }
您需要初始化
min
做大事。可能是 Integer.MAX_VALUE。 由于 min 始终为零,因此上述条件每次都会失败。
关于java - 输出文件中最长和最短的文本,并发现回文不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60679408/