1.从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入为 0 时结束程序
import java.util.Scanner;
{
public static void main(String[] args)
{
Scanner scan=new Scanner(System.in);
int positiveNumber=0;
int negativeNumber=0;
while(true){//for(;;)
int num=scan.nextInt();
if(num>0){
positiveNumber++;
}else if(num<0){
negativeNumber++;
}else{
break;
}
}
System.out.println("正数的个数"+positiveNumber);
System.out.println("负数的个数"+negativeNumber);
}
}
结论:(1)不在循环部分限制次数的结构:for(;;)或while(true)
(2)结束循环的方式:循环条件返回false或者在循环体中执行break
2.求100内所有的质数
class PrimeNumberTest
{
public static void main(String[] args)
{
int i,j;
for(i=2;i<100;i++){
boolean flag=true;
for(j=2;j<i;j++){
if(i%j==0){
flag=false;
}
}
if(flag==true){
System.out.println(i);
}
}
}
}
优化后的代码:
//优化后的代码
class PrimeNumberTest1
{
public static void main(String[] args)
{
int i,j;
for(i=2;i<100;i++){
boolean flag=true;
for(j=2;j<=Math.sqrt(i);j++){//优化二:对本身质数的自然数是有效的
if(i%j==0){
flag=false;
break;//优化一:只对本身非质数的自然数是有效的
}
}
if(flag==true){
System.out.println(i);
}
}
}
}
3.一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3。编程找出1000以内的所有完数。(因子:除去这个数本身的其它约数)
class WanShuTest
{
public static void main(String[] args)
{
int i,j;
for(i=2;i<=1000;i++){
int k=0;
for(j=1;j<=(i/2);j++){
if(i%j==0){
k=k+j;
}
}
//System.out.println(i+"约数的和为"+k);
if(i==k){
System.out.println(i);
}
}
}
}