printf(“%3d,...)没有在eclipse juno上工作

时间:2017-09-20 13:20:50

标签: java fifo

package p;

import java.io.*;
public class fifo {

    public static void main(String[] args) throws IOException 
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int frames = 3, pointer = 0, fault = 0, reflen, def = 0;
        int spaces[];
        int reference[];
        int mem_layout[][];

        System.out.println("Reference String Length: ");
        reflen = Integer.parseInt(br.readLine());


        reference = new int[reflen];
        mem_layout = new int[reflen][frames];
        spaces = new int[frames];
        for(int j = 0; j < frames; j++)
                spaces[j] = 0;

        System.out.println("Reference Numbers: ");
        for(int i = 0; i < reflen; i++)
        {
            reference[i] = Integer.parseInt(br.readLine());      
        }
        System.out.println();
        for(int i = 0; i < reflen; i++)
        {
         int search = -1;
         for(int j = 0; j < frames; j++)
         {
          if(spaces[j] == reference[i])
          {
           search = j;
           def++;
           break;
          } 
         }
         if(search == -1)
         {
          spaces[pointer] = reference[i];
          fault++;
          pointer++;
          if(pointer == frames)
           pointer = 0 ;
         }
            for(int j = 0; j < frames; j++)
                mem_layout[i][j] = spaces[j];
        }

        for(int i = 0; i < frames; i++)
        {
            for(int j = 0; j < reflen; j++)
                //System.out.printf("%3d ", reference);
                System.out.printf("%3d ",mem_layout[j][i]); //ERROR UNDER PRINTF
            System.out.println();
        }

        System.out.println("Fault: " + fault);
        System.out.println("Default: " + def);
        System.out.println("Page Fault Rate: " + fault + "/" + reflen + " = " + ((double)fault/reflen)*100 + "%" );
    }

}
  

因此我们被告知继续在家工作。代码工作正常   在我们的计算机实验室中使用另一个版本的eclipse。我正在使用   一个juno和printf不再起作用了。请帮助提交   明天我不知道为什么它不再起作用了。

juno过时了吗?我尝试使用eclipse建议删除错误,但它产生更多错误lol :(

2 个答案:

答案 0 :(得分:1)

在评论中,您说错误消息是:

  

PrintStream类型中的方法格式(String,Object [])不适用于参数(String,int)

这很奇怪。但是,一种可能的解释是您的Eclipse设置选择了一个非常旧的Java版本。在Java 1.5之前,不支持自动装箱。这会阻止编译器将int自动装箱到Integer

启动Eclipse并打开Window&gt; Preferences。选择Java&gt;编译器首选项。看看&#34;编译器合规级别&#34;设置是,并将其更改为&#34; 1.8&#34;。

然后使用Project&gt; Clean重新编译所有内容。

你也可以改变这个:

System.out.printf("%3d ", mem_layout[j][i]);

到此:

System.out.printf("%3d ", new Object[]{
                             Integer.valueOf(mem_layout[j][i])});

使源代码与旧的Java编译器兼容。但这是一个糟糕的解决方案,IMO。

答案 1 :(得分:0)

  • 尝试System.out.format();代替System.out.printf();
  • 尝试安装他们在实验室使用的另一个版本的Eclipse
  • 请告诉我们Eclipse显示的错误/异常