Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用方法按字母顺序排序文件内容(Java)_Java_Arrays_Loops_File_Methods - Fatal编程技术网

使用方法按字母顺序排序文件内容(Java)

使用方法按字母顺序排序文件内容(Java),java,arrays,loops,file,methods,Java,Arrays,Loops,File,Methods,标题可能有点误导,但我正在编写一段代码,将其作为文本文件的内容: 基本上,我希望它们按字母顺序排列,它应该生成一个全新的文件,如下所示: 我尝试使用indexOf()方法从现有文本文件中仅提取游戏列表的名称。我还尝试将它们存储在一个新的数组中,以避免计算机出现混乱。问题是,当我尝试将info数组的indexOf存储到一个新数组中时,该行给出了一个错误“无法从int转换为string”,我不确定如何修复该错误 下面是我的代码: import java.io.File; import java.io

标题可能有点误导,但我正在编写一段代码,将其作为文本文件的内容:

基本上,我希望它们按字母顺序排列,它应该生成一个全新的文件,如下所示:

我尝试使用indexOf()方法从现有文本文件中仅提取游戏列表的名称。我还尝试将它们存储在一个新的数组中,以避免计算机出现混乱。问题是,当我尝试将info数组的indexOf存储到一个新数组中时,该行给出了一个错误“无法从int转换为string”,我不确定如何修复该错误

下面是我的代码:

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class Main{
  public static void main (String[]args) throws IOException{

    File file = new File("releasedates.txt");

    String []arr = input(file);

    output(file,arr);

    outputSort1(file, arr);
    

  }

  public static String[]input (File file) throws FileNotFoundException{
    String[]arr = new String[3];
    Scanner sc = new Scanner(file);

    for(int i = 0; i < arr.length; i++){
      arr[i] = sc.nextLine();

    }
    return arr;
  }

  public static void output(File file, String[] info) throws IOException{

    FileWriter writer = new FileWriter("fileName.txt");
    for(String aString:info){
      writer.write(aString);
    }
    writer.close();
  }

  public static void sortByMonth(String[]info){

    String temp;

    for (int j = 0; j < info.length; j++) {
      for (int i = j + 1; i < info.length; i++) {
 
  if (info[i].compareTo(info[j]) < 0) {
    temp = info[j];
    info[j] = info[i];
    info[i] = temp;
        }
     }
    }
  }

  public static void outputSort1(File file,String[] info) throws IOException{
    sortByMonth(info);
    FileWriter writer = new FileWriter("fileNameSorted1.txt");
    for(String aString:info){
        writer.write(aString);
    }
    writer.close();
}

public static void sortByName(String[]info){

    String[] names = new String[3];

      for(int i = 0; i < info.length; i ++){

          names[i] = info[i].indexOf(" " ,info.length);
      }

    String temp;

      for (int j = 0; j < names.length; j++) {
        for (int i = j + 1; i < names.length; i++) {
   
    if (names[i].compareTo(names[j]) < 0) {
      temp = names[j];
      names[j] = names[i];
      names[i] = temp;
          }
       }
      }
    }

}
导入java.io.File;
导入java.io.FileNotFoundException;
导入java.io.FileWriter;
导入java.io.IOException;
导入java.util.Scanner;
公共班机{
公共静态void main(字符串[]args)引发IOException{
File File=新文件(“releasedates.txt”);
字符串[]arr=输入(文件);
输出(文件,arr);
输出SORT1(文件,arr);
}
公共静态字符串[]输入(文件)引发FileNotFoundException{
字符串[]arr=新字符串[3];
扫描仪sc=新扫描仪(文件);
对于(int i=0;i
您已将名称数组声明为
字符串[]
,因此无法为其分配整数。indexOf方法返回整数

publicstaticvoidsortbyname(字符串[]信息){
字符串[]名称=新字符串[3];//s.substring(s.indexOf(“”,s.length())
.collect(Collectors.toList());
System.out.println(sortedByDate);
Files.write(Path.of(“e:\\fileDateSorted.txt”)、sortedByDate);
}
公共静态整数比较(字符串d1、字符串d2){
d1=d1.子字符串(0,d1.indexOf(“”);
d2=d2.子字符串(0,d2.indexOf(“”);
LocalDate ld1=LocalDate.parse(d1,
模式的日期时间格式(“MM/dd/yy”);
LocalDate ld2=LocalDate.parse(d2,
模式的日期时间格式(“MM/dd/yy”);
返回ld1.compareTo(ld2);
}
}

您已将名称数组声明为
字符串[]
,因此无法为其分配整数。indexOf方法返回整数

publicstaticvoidsortbyname(字符串[]信息){
字符串[]名称=新字符串[3];//s.substring(s.indexOf(“”,s.length())
.collect(Collectors.toList());
System.out.println(sortedByDate);
Files.write(Path.of(“e:\\fileDateSorted.txt”)、sortedByDate);
}
公共静态整数比较(字符串d1、字符串d2){
d1=d1.子字符串(0,d1.indexOf(“”);
d2=d2.子字符串(0,d2.indexOf(“”);
LocalDate ld1=LocalDate.parse(d1,
模式的日期时间格式(“MM/dd/yy”);
LocalDate ld2=LocalDate.parse(d2,
模式的日期时间格式(“MM/dd/yy”);
返回ld1.compareTo(ld2);
}
}

由@onkar ruikar给出的答案是正确的
indexOf
返回
int
,您试图将其存储在
String
中。我想扩展他的回答,在那里你可以将游戏/电影名称存储在
TreeSet
而不是
Array
,这样默认情况下它将按字母顺序排序


如果要允许重复的游戏/电影名称,则可以使用
ArrayList
并调用
Collections.sort(

由@onkar ruikar提供的答案是正确的。
indexOf
返回
int
,您试图将其存储在
String
中。我想扩展他的答案,您可以将游戏/电影名称存储在
树集
而不是
数组
,这样默认情况下它将按字母顺序排序

如果要允许重复的游戏/电影名称,则可以使用
ArrayList
并调用
Collections.sort(

Batman: Arkham Underworld
Sega 3D Classics Collection 
Tokyo Mirage Sessions #FE
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class Main{
  public static void main (String[]args) throws IOException{

    File file = new File("releasedates.txt");

    String []arr = input(file);

    output(file,arr);

    outputSort1(file, arr);
    

  }

  public static String[]input (File file) throws FileNotFoundException{
    String[]arr = new String[3];
    Scanner sc = new Scanner(file);

    for(int i = 0; i < arr.length; i++){
      arr[i] = sc.nextLine();

    }
    return arr;
  }

  public static void output(File file, String[] info) throws IOException{

    FileWriter writer = new FileWriter("fileName.txt");
    for(String aString:info){
      writer.write(aString);
    }
    writer.close();
  }

  public static void sortByMonth(String[]info){

    String temp;

    for (int j = 0; j < info.length; j++) {
      for (int i = j + 1; i < info.length; i++) {
 
  if (info[i].compareTo(info[j]) < 0) {
    temp = info[j];
    info[j] = info[i];
    info[i] = temp;
        }
     }
    }
  }

  public static void outputSort1(File file,String[] info) throws IOException{
    sortByMonth(info);
    FileWriter writer = new FileWriter("fileNameSorted1.txt");
    for(String aString:info){
        writer.write(aString);
    }
    writer.close();
}

public static void sortByName(String[]info){

    String[] names = new String[3];

      for(int i = 0; i < info.length; i ++){

          names[i] = info[i].indexOf(" " ,info.length);
      }

    String temp;

      for (int j = 0; j < names.length; j++) {
        for (int i = j + 1; i < names.length; i++) {
   
    if (names[i].compareTo(names[j]) < 0) {
      temp = names[j];
      names[j] = names[i];
      names[i] = temp;
          }
       }
      }
    }

}