我希望我有意义,但是,我想弄清楚如何在文本文件中读取字符串/输入,以便我可以删除其中的奇数字母。所以例如'a'将是1,'b'将是2,'c'将是3,依此类推。所以在我的文本文件中我写了“Hello,world!”。最终输出应该是Hll,rld! 我真的需要一些帮助,因为我正在努力奋斗,只是盯着我的电脑几个小时无处可去,试图解决这个问题。继承了我到目前为止所做的事情(基本上没什么),我在文件处理方面很糟糕。
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class readodds {
public static void main (String[]args) throws FileNotFoundException {
Scanner console = new Scanner(System.in);
String letter= new String();
System.out.println("Name of file: ");
String inputFile = console.next();
File file = new File(inputFile);
Scanner in = new Scanner(file);
System.out.println(in.nextLine());
while(in.hasNext()) {
String line = in.nextLine();
}
}
}
答案 0 :(得分:2)
让JDK为您做繁重的工作。它可以在一行中完成:
Files.lines(Paths.get(inputFile))
.map(s -> s.replaceAll("(?i)[acegikmoqsuwy]",""))
.forEach(System.out::println);
答案 1 :(得分:0)
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class readodds {
public static void main (String[]args) throws FileNotFoundException {
Scanner console = new Scanner(System.in);
String letter= new String();
System.out.println("Name of file: ");
String inputFile = console.next();
File file = new File(inputFile);
Scanner in = new Scanner(file);
while(in.hasNext()) {
String line = in.nextLine();
line = line.replaceAll("a","1"); //This replaces every a with a 1
System.out.println(line);
}
}
}
您可以为要更改的每个其他字母复制line.replaceAll(“a”,“1”)的调用。如果你想删除一个字母:line.replaceAll(“a”,“”);
答案 2 :(得分:0)
您可以遍历字符串并通过比较仅打印偶数字母。
while (in.hasNext()) {
String line = in.nextLine();
for (int i = 0; i < line.length(); i++) {
char letter = line.charAt(i);
if (Character.toUpperCase(letter) >= 'A' && Character.toUpperCase(letter) <= 'Z' && ('Z' - Character.toUpperCase(letter)) % 2 == 0)
System.out.print(letter);
}
}
答案 3 :(得分:0)
你可以使用asci整数值的字符。例如 字符&#34; a&#34;等效的int值是97,b&#39;等等。 您可以执行以下代码来获取每行文件的转换行。 然后将新的转换行写入输出临时文件
public static void main(String[] argv) {
System.out.println(removedOddLetter("Hello, world!"));
}
public static String removedOddLetter(String test){
int aNum='a';
int ANum='A';
int zNum='z';
int ZNum='Z';
char[] bArr=test.toCharArray();
StringBuilder outLines=new StringBuilder();
for(int i=0;i<bArr.length;i++){
// if the character is alphabet
if (bArr[i] >= aNum && bArr[i] <= zNum){
// offSet is zero for odd letter like a
int offSet=bArr[i]-aNum;
// if bArr[i] is not odd letter
if((offSet%2) ==1){
outLines.append(bArr[i]);
}
}
// similarly for Capital characters
else if (bArr[i] >= ANum && bArr[i] <= ZNum){
// offSet is zero for odd letter like a
int offSet=bArr[i]-ANum;
// if bArr[i] is not odd letter
if((offSet%2) ==1){
outLines.append(bArr[i]);
}
}
else {
// any other character copy the content
outLines.append(bArr[i]);
}
}
return outLines.toString();
}
答案 4 :(得分:0)
你的While循环将是
while(in.hasNext()) {
String line = in.nextLine();
char[] arr = s.toCharArray ();
for (char c: arr) {
if ((c % 2) == 0) {
System.out.print (c);
}
}
}