求某范围的所有含1 这个数字的数并存盘保存。


/*1. 求某范围的所有含1 这个数字的数并存盘保存。[基础算法+IO]
 ( SpecialDigitals.java  )

   题目要求:
a) 开始和结束范围由用户从控制台(System.in)手工录入。
b) 统计数量并求和。
c) 计算结果保存在 c:\numbers.txt 文件中(每行输出8 个数,可多行显示)。
   文件格式如下:
   开始范围:1
   结束范围:20
   数字:1 10 11 12 13 14 15 16
   …..

   …..

   数字数量:xx 个
   数字和:xxxx
*/

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.Scanner;

/**
 * @author Calm
 *
 */
public class SpecialDigitals {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		Scanner input = new Scanner(System.in);
		int start;     //开始范围
		int end;	   //结束范围
		int count = 0; //计数器
		int sum = 0;   //数字和
		PrintWriter writer = null;
		
		try {
			writer=new PrintWriter(new FileOutputStream(new File("c:/numbers.txt"),true));
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} 
		
		System.out.print("开始范围: ");
		writer.print("开始范围: ");
		start = input.nextInt();
		writer.println(start);
		System.out.print("结束范围: ");
		writer.print("结束范围: ");
		end = input.nextInt();
		writer.println(end);
		System.out.println("\n满足的特殊数字如下: ");
		writer.println("\n满足的特殊数字如下: ");
		
		for(int i = start; i <= end; i++){
			
			if(isSpecialDigital(i)){
				System.out.print(i + "\t");
				writer.print(i + "\t");
				sum += i;
				count++;
				
				if(count % 8 ==0){
					System.out.println();
					writer.println();
				}
			}
						
		}
				
		System.out.println("\n数字数量: " + count);
		writer.println();
		writer.println("数字数量:\n " + count);
		System.out.println("数字和: " + sum);
		writer.println("数字和: " + sum);
		
		writer.flush();
		writer.close();

	}
	
	/**
	 * 判断一个整数是否是要求的特征数字
	 * @param n
	 * @return
	 */
	public static boolean isSpecialDigital(int n){
		
		while(n != 0){
			if(n % 10 == 1)
				return true;
			else
				n /= 10;
		}
		
		return false;
	
	}

}


做这道题的时候发现,writer.print("\n")语句无法将换行操作写入文件,而writer.print('\n')语句就可以。

不明白是什么原因,在控制台输出时,用System.out.print("\n")和System.out.print('\n')都可以输出换行。


原来在windows系统中,写入时换行是用\r\n,writer.print("\r\n");就能写入换行惊讶

猜你喜欢

转载自blog.csdn.net/u012279312/article/details/22694837