java 产生20个50以内的随机整数保存到文件中,从文件中读取这20个数后就算其总和

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 产生20个50以内的随机整数保存到文件中,从文件中读取这20个数后就算其总和相关的知识,希望对你有一定的参考价值。

求高手解答。。。急很!!20分钟给答案!100分!谢谢!

参考技术A import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;
import java.util.Random;

public class AA

public int compareAL(List list,List list2)
int result = 0;
for (int i = 0; i < list.size(); i++)
if((i < list2.size())&&(list.get(i) == list2.get(i)))
result ++;


return result;


public static void main(String[] args)
String path = "c:\\456.txt";
String content = "";
FileReadWrite fileOption = new FileReadWrite(path);

try
// content = fileOption.doRead();
//将随机数存入
content = fileOption.proRadom();
fileOption.doWriteWithByte(content);
//将随机数读取
content = fileOption.doReadWithByte();
System.out.println(fileOption.add(content));
//content += fileOption.proRadom()+ "\n";
//content += "I am a student" + "\n" ;
//fileOption.doWrite(content);
fileOption.doWriteWithByte(content);
catch (IOException e)
// TODO 自动生成された catch ブロック
e.printStackTrace();




class FileReadWrite

public String proRadom()
String strArry = "";
Random random = new Random();
for (int i = 0; i < 20; i++)
strArry += random.nextInt(50) + ",";

return strArry.substring(0, strArry.length()-1) ;


public int add(String str)
int result =0;
String[] strArry = str.split(",");
for (int i = 0; i < strArry.length; i++)
result +=Integer.parseInt(strArry[i]) ;

return result;


private String path;

public FileReadWrite(String path)
this.path = path;

public String doReadWithByte() throws IOException
byte[] temp =new byte[20];
String strRead = "";
File f = new File(path);
if (!f.exists())
f.createNewFile();

FileInputStream stream = new FileInputStream(f);
BufferedInputStream bf = new BufferedInputStream(stream);
int c;
while ((c =bf.read(temp)) != -1)
strRead =strRead + new String(temp,0,c) ;

bf.close();
stream.close();
return strRead;


public String doRead() throws IOException
String strRead = "";
String str;
File f = new File(path);
if (!f.exists())
f.createNewFile();
else
f.delete();

BufferedReader input = new BufferedReader(new FileReader(f));
while ((str = input.readLine()) != null)
strRead = strRead + str ;

input.close();
return strRead;


public void doWrite(String content) throws IOException
File f = new File(path);
BufferedWriter output = new BufferedWriter(new FileWriter(f));
output.write(content);
output.close();


public void doWriteWithByte(String content) throws IOException
File f = new File(path);
FileOutputStream out = new FileOutputStream(f);
out.write(content.getBytes());
out.close();

参考技术B import java.io.*;
import java.util.Random;

public class IO
public static void main(String[] args) throws IOException
String file = "c:/io.haha";
int c = 20;
int max = 50;
FileWriter fw = new FileWriter(file);
Random r = new Random();
for(int i=0; i<c; i++)
int t = r.nextInt(max);
System.out.println(t);
fw.write(String.valueOf(t));
fw.write("\r\n");

fw.flush();
fw.close();

int sum = 0;
String tmp;
BufferedReader br = new BufferedReader(new FileReader(file));

while((tmp=br.readLine())!=null)
sum+=Integer.parseInt(tmp);
br.close();
System.out.println("sum="+sum);

参考技术C import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;

public class RandomNumber
ArrayList <Integer> random = new ArrayList <Integer>();
ArrayList <Integer> dataList = new ArrayList <Integer>();
String path;

public static void main(String[] args)
RandomNumber test = new RandomNumber();
Scanner input = new Scanner(System.in);
System.out.print("请输入一个保存路径:");
test.setPath(input.next());
test.getRandomNumber();
System.out.println(test.getSum());



public void setPath(String path)
this.path = path;


public void getRandomNumber()
Random r = new Random();
if(!random.isEmpty())
random.clear();

for(int i=0;i<20;i++)
random.add(new Integer(r.nextInt(50)));

this.saveData();


public void saveData()
try
FileWriter writer = new FileWriter(path);
String data="";
for(int i=0;i<random.size();i++)
data += random.get(i)+",";

writer.write(data);
writer.close();
catch (IOException e)
e.printStackTrace();



public int getSum()
int sum = 0;
this.readData();
for(int i=0;i<dataList.size();i++)
sum += dataList.get(i);

return sum;


public void readData()
try
Scanner input = new Scanner(new FileReader(path));
String data = input.nextLine();
this.getData(data);
catch (Exception e)
e.printStackTrace();



public void getData(String data)
if(!dataList.isEmpty())
dataList.clear();

String temp [] = data.split(",");
for(int i=0;i<temp.length;i++)
dataList.add(new Integer(Integer.parseInt(temp[i])));



参考技术D import java.io.*;
import java.util.*;
class Test
private String filename;
public void writeFile(String filename,int number,int min,int max)
try
this.filename=filename;
File file=new File(this.filename);
PrintStream print=new PrintStream(file);
int temp=0;
for(int i=0;i<number;i++)

temp=(int)(Math.random()*1000000)%(max-min)+min;
print.println(temp);

print.close();
catch(Exception e)




public int readFile()
int sum=0,nx=0;
try

Scanner scanf=new Scanner(new File(this.filename));

while(scanf.hasNextLine())
nx=Integer.parseInt(scanf.nextLine());
sum=sum+nx;

scanf.close();
catch(Exception e)


return sum;


static public void main(String[] str)
Test t=new Test();
t.writeFile("1.txt",20,0,50);
System.out.println(t.readFile());

第5个回答  2009-06-09 这问题要动动脑子哦。

C指针原理(38)-C快速入门

为增加游戏的趣味性,待猜的数字可使用一个产生1-500以内的随机整数,可按以下方式计算这个整数(%为取余操作):

1-500以内的随机整数=随机整数%499+1

可借助stdlib.h中定义的srand函数来生成公式右边所需要的随机数,该函数需要一个数值做为产生随机数的种子(也就是这个函数的唯一个参数),通常使用当前时间值作为参数,当前时间值可以通过time函数(以0做为参数调用,该函数在time.h中定义)。

比如下面代码产生2个随机整数:

#include?<stdio.h>

#include?<stdlib.h>

#include?<time.h>

int?main()

{

????srand((int)time(0));

????printf("第一个随机数:%d?第二个随机数:%d
",rand()%499+1,rand()%499+1);

}

[email protected]:~/cquick?%?gcc?a.c?-o?mytest

[email protected]:~/cquick?%?./mytest

第一个随机数:429?第二个随机数:44

可将上面代码组合成本程序的第一个自定义函数getnumber,供main函数调用。最后代码如下:

#include?<stdio.h>

#include?<stdlib.h>

#include?<time.h>

int?getnumber(){

????????srand((int)time(0));

????????return?rand()%499+1;

}

int?main(){

????????int?mynum;

????????int?ispass=0;

????????while(1){

????????printf("你好,请输入一个数字:");

????????scanf("%d",&mynum);

????????if?(mynum>500?||mynum<1){

????????????????printf("数字仅限于1-500之间,请重新运行本程序!
");

????????}

????????else{

????????????????printf("
你输入的数字是:%d
",mynum);

????????????????break;

????????}

????????}

????????printf("number:%d
",getnumber());

}

[email protected]:~/cquick?%?gcc?guessnum.c?-o?myguess

[email protected]:~/cquick?%?./myguess

你好,请输入一个数字:55

你输入的数字是:55

number:109

程序最后一个printf语句取得要猜的随机整数后,输出到屏幕,这只是测试(游戏中可不能把结果告诉玩家,接下来,将对这个程序继续完善,将去掉这个printf语句)。

(5)反复接受玩家输入,只到数字猜中为止

C程序通过else?if语句块可实现一组条件语句块拥有多个不同的条件语句,它的使用形如:

if?(条件1){

.........

}

else?if(条件2){

..........

}

Else?if(条件3){

.........

}

......

......

Else?if(条件n){

.........

}

Else{

.........

}

实现这一步的功能使用了这个语句块结构。?


#include?<stdio.h>

#include?<stdlib.h>

#include?<time.h>

int?getnumber(){

???? srand((int)time(0));

????????return?rand()%499+1;

}

int?main(){

int?mynum;

int?ispass=0;

int?guessnum=getnumber();

while?(1){

while(1){

printf("你好,请输入一个数字:");

????????scanf("%d",&mynum);

if?(mynum>500?||mynum<1){

printf("数字仅限于1-500之间
");

}

else{

printf("
你输入的数字是:%d
",mynum);

break;

}

}

if?(mynum>guessnum){

printf("数字大了!
");

}

????????else?if(mynum<guessnum){

printf("数字小了!
");

}

else{

printf("祝贺您,您猜中了!
");

break;

}

}

}

[email protected]:~/cquick?%?gcc?guessnum.c?-o?myguess

[email protected]:~/cquick?%?./myguess

你好,请输入一个数字:55

你输入的数字是:55

数字小了!

你好,请输入一个数字:280

你输入的数字是:280

数字小了!

你好,请输入一个数字:350

你输入的数字是:350

数字小了!

你好,请输入一个数字:400

你输入的数字是:400

数字小了!

你好,请输入一个数字:488

你输入的数字是:488

数字大了!

你好,请输入一个数字:420

你输入的数字是:420

数字小了!

你好,请输入一个数字:450

你输入的数字是:450

数字大了!

你好,请输入一个数字:440

你输入的数字是:440

数字大了!

你好,请输入一个数字:430

你输入的数字是:430

祝贺您,您猜中了!

(6)自动猜数算法

能不能让电脑程序拥有智能,让程序来猜数字呢?肯定可以,通过一定的算法就能实现。什么是算法?

算法在中国古代文献中称为“术”,最早出现在《周髀算经》、《九章算术》。特别是《九章算术》,给出四则运算、最大公约数、最小公倍数、开平方根、开立方根、求素数的埃拉托斯特尼筛法,线性方程组求解的算法。三国代的刘徽给出求圆周率的算法:刘徽割圆术。

欧几里得算法被人们认为是史上第一个算法。第一次编写程序是Ada?Byron于1842年为巴贝奇分析机编写求解解伯努利微分方程的程序,因此Ada?Byron被大多数人认为是世界上第一位程序员。

算法的核心是创建问题抽象的模型和明确求解目标,之后可以根据具体的问题选择不同的模式和方法完成算法的设计。

为了能让程序实现自动猜数,必须假设一个前提:程序不知道要猜的数字,也就是说这个算法中只能与要猜的数字进行比较,而不能直接“知道”要猜的数字值。可将算法设计如下:

第一步,设数字范围R为1-500。

第二步,取范围R以内的中间值A,把A作为程序模仿人类猜测出的数字。

第三步,将猜测的数字A与被猜的结果B比较

(1)如果A>B,则将R的上限设为A,回到第二步。

(2)如果A<B,则R的下限设为A?,回到第二步。

(3)如果A=B,则退出程序,提示猜中数字,进入第四步。

第四步,在屏幕上输出A和B,并提示猜中数字。

根据上面的算法来编写以下程序:


#include?<stdio.h>

#include?<stdlib.h>

#include?<time.h>

//code:[email protected]

//date:2014-01-23

//未与作者书面联系,请勿将本程序用于任何用途

int?getnumber(){

????????srand((int)time(0));

????????return?rand()%499+1;

}

int?main(){

????????int?mynum;

????????int?ispass=0;

????????int?guessnum=getnumber();

????????int?myrange[2]={1,500};

????????while?(1){

????????mynum=(myrange[0]+myrange[1])/2;

????????if?(mynum>guessnum){

????????????????printf("程序猜的数字为%d,数字大了!
",mynum);

????????????????myrange[1]=mynum;

????????}

????????else?if(mynum<guessnum){

????????????????printf("程序猜的数字为%d,数字小了!
",mynum);

????????????????myrange[0]=mynum;

????????}

????????else{

????????????????printf("程序猜的数字为%d,?被猜的数字为%d,猜中了!
",mynum,guessnum);

????????????????break;

????????}?

????????}

}?

运行后,结果为:

[email protected]:~/cquick?%?gcc?guessnum.c?-o?myguess

[email protected]:~/cquick?%?./myguess

程序猜的数字为250,数字大了!

程序猜的数字为125,数字小了!

程序猜的数字为187,数字大了!

程序猜的数字为156,数字小了!

程序猜的数字为171,数字大了!

程序猜的数字为163,数字小了!

程序猜的数字为167,?被猜的数字为167,猜中了!

[email protected]:~/cquick?%?

以上是关于java 产生20个50以内的随机整数保存到文件中,从文件中读取这20个数后就算其总和的主要内容,如果未能解决你的问题,请参考以下文章

java中怎么求随机产生50个10以内的整数,输出其中重复次数最多的数?

python两个10以内的随机整数以第一个随机整数为半径第二个随机整数为高,计算并输出圆锥体的体积

python两个10以内的随机整数以第一个随机整数为半径第二个随机整数为高,计算并输出圆锥体的体积

c语言编程:输入一个正整数n,产生n个1000以内的随机数,统计其中这些随机数中偶数的个数,并输出统计结果.

java编程序题目是随机生成0到10以内的整数十个,要求随机产生的 10个数中,等于7,8,9,10的数不超过3个

Java分别采用随机生成或从键盘输入的方式,产生10个10以内的整数?