Java 主方法没有输出?

Java 主方法没有输出?,java,main,Java,Main,我正在编写一个程序,它应该输出一个表,但没有输出。我没有收到任何错误-没有来自终端或IDE中交互的编译错误或运行时错误。以下是我的主要方法: public static void main(String[] args) throws IOException{ if(args.length < 1){ Scanner input = new Scanner(System.in); String s = input.nextLine(); Scanner scan

我正在编写一个程序,它应该输出一个表,但没有输出。我没有收到任何错误-没有来自终端或IDE中交互的编译错误或运行时错误。以下是我的主要方法:

public static void main(String[] args) throws IOException{
  if(args.length < 1){
    Scanner input = new Scanner(System.in);
    String s = input.nextLine();
    Scanner scan = new Scanner(s);
    Map<Character,Double> freq = new TreeMap<Character,Double>();
    while(scan.hasNextLine()){
      int i = Integer.parseInt(scan.next());
      char c = (char)i;
      double d = Double.parseDouble(scan.next());
      freq.put(c,d);
    }
    input.close();
    scan.close();

    HuffmanCode huff = new HuffmanCode(freq);
    for(Map.Entry<Character,String> entry : huff.codeMap.entrySet()){
     System.out.format("%3c%4d%30s", entry.getKey(), (int)entry.getKey(), entry.getValue());
    }
  }else{
    Scanner scan = new Scanner(new File(args[0]));
    Map<Character,Double> freq = new TreeMap<Character,Double>();
    while(scan.hasNext()){
      int i = Integer.parseInt(scan.next());
      char c = (char)i;
      double d = Double.parseDouble(scan.next());
      freq.put(c,d);
    }
    HuffmanCode huff = new HuffmanCode(freq);
    for(Map.Entry<Character,String> entry : huff.codeMap.entrySet()){
     System.out.format("%3c%4d%30s", entry.getKey(), (int)entry.getKey(), entry.getValue());
    }
  }      
}
publicstaticvoidmain(字符串[]args)引发IOException{
如果(参数长度<1){
扫描仪输入=新扫描仪(System.in);
字符串s=input.nextLine();
扫描仪扫描=新扫描仪;
Map freq=new TreeMap();
while(scan.hasNextLine()){
inti=Integer.parseInt(scan.next());
char c=(char)i;
double d=double.parseDouble(scan.next());
频率输出(c,d);
}
input.close();
scan.close();
HuffmanCode huff=新的HuffmanCode(freq);
for(Map.Entry:huff.codeMap.entrySet()){
System.out.format(“%3c%4d%30s”、entry.getKey()、(int)entry.getKey()、entry.getValue());
}
}否则{
扫描仪扫描=新扫描仪(新文件(args[0]);
Map freq=new TreeMap();
while(scan.hasNext()){
inti=Integer.parseInt(scan.next());
char c=(char)i;
double d=double.parseDouble(scan.next());
频率输出(c,d);
}
HuffmanCode huff=新的HuffmanCode(freq);
for(Map.Entry:huff.codeMap.entrySet()){
System.out.format(“%3c%4d%30s”、entry.getKey()、(int)entry.getKey()、entry.getValue());
}
}      
}
我很困惑,因为程序完成了,没有给我错误,但没有打印出任何内容。我有什么明显的遗漏吗

编辑:这是我的HuffmanCode构造函数:

HuffmanCode(Map<Character,Double> freqMap){
   this.freqMap = freqMap;
   PriorityQueue<TreeNode> queue = new PriorityQueue<TreeNode>(new NodeComparator());
   for(Map.Entry<Character,Double> entry : freqMap.entrySet()){
     TreeNode temp = new TreeNode(entry.getKey(),entry.getValue());
     queue.add(temp);
   }
   while(queue.size() > 1){
     TreeNode t1 = queue.remove();
     TreeNode t2 = queue.remove();
     TreeNode node = new TreeNode(t1.freq + t2.freq, t1, t2);
     queue.add(node);
   }
   root = queue.remove();       
   String s = "";
   codeMap = traversal(root,s);       
}
HuffmanCode(Map-freqMap){
this.freqMap=freqMap;
PriorityQueue=newpriorityqueue(newnodecomparator());
对于(Map.Entry:freqMap.entrySet()){
TreeNode temp=new TreeNode(entry.getKey(),entry.getValue());
添加(临时);
}
while(queue.size()>1){
TreeNode t1=queue.remove();
TreeNode t2=queue.remove();
树节点=新树节点(t1.freq+t2.freq,t1,t2);
添加(节点);
}
root=queue.remove();
字符串s=“”;
代码映射=遍历(根,s);
}

另外,我输入了一个文件作为参数,因此主方法中的第一个
if
块不涉及-只是为了完整性而添加了它。

在这种情况下,不要关闭
输入
扫描仪
(可能不会解决问题,但关闭
系统不是一个好主意。在
中,我添加了构造函数,但是复制整个类需要很长时间-包括其他几种方法如果没有
traversal()
,很难说问题出在哪里,因为问题可能是
codeMap
是空的,而
traversal()是空的
似乎负责
codeMap
的初始化。我已尝试调试代码,但尚未找到任何内容-将继续查找。Ken Slade肯定是对的,这一定是构建代码映射的问题。我将继续调试,直到找到问题!你能附上一个输入样本吗?我对您输入的格式很好奇。在这种情况下,不要关闭
输入
扫描仪
(可能无法解决问题,但关闭
系统不是一个好主意。在
中,我添加了构造函数,但是复制整个类需要很长时间-包括其他几种方法如果没有
traversal()
,很难说问题出在哪里,因为问题可能是
codeMap
是空的,而
traversal()是空的
似乎负责
codeMap
的初始化。我已尝试调试代码,但尚未找到任何内容-将继续查找。Ken Slade肯定是对的,这一定是构建代码映射的问题。我将继续调试,直到找到问题!你能附上一个输入样本吗?我对你输入的格式很好奇。