如何为输出添加更多值?

Posted

技术标签:

【中文标题】如何为输出添加更多值?【英文标题】:How do I add more values to my output? 【发布时间】:2016-02-22 09:02:20 【问题描述】:

这是我的函数,假设从“in1.txt”中获取值并将它们输出到“out1.txt”中,并说明它们是否为素数。

代码:

import java.util.Scanner;
import java.util.ArrayList;
import java.io.File;
import java.io.PrintWriter;
public class task1

public static boolean isPrime(int n) 
   if (n <= 1) 
   return false;
   
   for (int i = 2; i < Math.sqrt(n); i++) 
   if (n % i == 0) 
       return false;
   

return true;

public static ArrayList<String> check_primes(String in_file, String out_file)

    File temp = new File(in_file);
    Scanner input_file;
    String filename = "out1.txt";
    PrintWriter out = null;

    try
    
        input_file = new Scanner(temp);
        out = new PrintWriter(filename);
    
    catch (Exception e)
    
        System.out.printf("Failed to open file %s\n",in_file);
        return null;
    
    ArrayList<String> result = new ArrayList<String>();
    while(input_file.hasNextLine())
    
        String line = input_file.nextLine();
        result.add(line);

        for(int i = 0; i<result.size();i++)
        
            String x = result.get(i); 
            int xx = Integer.parseInt(x);
            if(isPrime(xx))
            
                out.printf(xx + " is a prime\r\n");
            
            else
            
                out.printf(xx + " is not a prime\r\n");
                    
        

        out.close();
    

    input_file.close();

    return result;
 
public static void main(String[] args)

check_primes("in1.txt", "out1.txt");
System.out.printf("Exiting...\n");

  

它只添加了 int1 文件的第一个值,我假设它是某种循环错误,或者我在循环中遗漏了一些东西。我测试了“x”或“xx”是否有错误,并将它们打印出来,x 将打印为 [7] [7 , 10] [7, 10, 13] 等形成金字塔,xx以类似于 7\n 7\n 10\n 7\n 10\n 13\n 的方式打印出来 有人可以帮我找出问题所在吗?

【问题讨论】:

考虑不关闭循环中的输出 :) @zapl +1 用于发现主要问题,但是,即使循环中的输出未关闭,您是否认为每次在结果中添加新行时都会重新启动 for 循环? 【参考方案1】:

我认为有一个循环,然后将每一行添加到列表中的目的是稍后处理包含所有行的列表。如果这是真的,那么您需要在您的 while 循环中包含 result.add(line) 并关闭它。在for循环中处理之后的所有行

while (input_file.hasNextLine()) 
   String line = input_file.nextLine();
   result.add(line);
 //close the loop here 

假设您没有关闭 while 循环。 For 循环只会执行一次,因为您的 result.size() 为 1,并且在 for 循环完成后,它将关闭输出流。

【讨论】:

谢谢你,现在我很生气我没有看到那个小修复xD【参考方案2】:
while(input_file.hasNextLine()) 
        String line = input_file.nextLine();
        result.add(line);     

for(int i = 0; i<result.size();i++)
    
        String x = result.get(i); 
        int xx = Integer.parseInt(x);
        if(isPrime(xx))
        
            out.printf(xx + " is a prime\r\n");
        
        else
        
            out.printf(xx + " is not a prime\r\n");
                
    

    out.close();

【讨论】:

以上是关于如何为输出添加更多值?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 C++ 程序添加定时延迟?

如何在我拥有的每个 y 轴值上添加气泡以及如何为每个值添加鼠标悬停功能?

如何为每一行创建 HTML 表格按钮并将第一列的值输入到 Flask 函数进行查询

如何为 data.table 中不包括 NA 的更多变量添加滞后并导致每个观察结果?

如何为 GitHub 组织添加自定义用户角色?

如何为格式列表输出添加前缀?