这个循环(一)主要讲解下如何利用循环打印图形,下面是正文——
1.通过键盘输入数据:
a)import java.util.Scanner包;
b)在主函数中Scanner s = new Scanner(System.in);
c)s.nextInt(),or s.nextDouble();
2.选择结构:
a)if(条件){//语句,如果只有一个语句{}可省略}
b)if(){}else if(){}...
c)switch(变量){case...常量 default:}注意:1.break关键字如果没有break,匹配上一个之后会默认往后匹配直到有break为止;break switch{}继续后面的语句;2.default语句最多只能出现一次,可以没有。可以出现任何的位置(和case并列即可)其作用相当于else。。。3.switch小括号中的变量类型,只能是如下类型:byte、short、int、char、枚举(不是基本数据类型)
3.循环结构:
for(表达式1;表达式2;表达式3)
{
//循环体
}
{
//循环体
}
break 跳出for循环 --->for结构结束
contiune 结束本次循环进行下一次---》去第三个表达式;
contiune 结束本次循环进行下一次---》去第三个表达式;
练习:形成for循环思想
package xunhuanti;
import java.util.Scanner;
public class Shuru {
private int s,a,b,c;
private int sum = 0;
private Scanner sc;
/**
* @param args
* 输入一个年龄,如果大于60则输出可以免费进入
*/
private void age(){
sc = new Scanner(System.in);
System.out.println("请输入年龄:");
s = sc.nextInt();
while(s<=60){
System.out.println("年龄不够免费条件!请重新输入:");
s = sc.nextInt();
}
System.out.println("可以免费进入");
}
/**
* 通过键盘输入三个数字,找出其中的最大值
*/
private void threeMax(){
sc = new Scanner(System.in);
System.out.println("请输入第一个数字:");
a = sc.nextInt();
System.out.println("请输入第二个数字:");
b = sc.nextInt();
System.out.println("请输入第三个数字:");
c = sc.nextInt();
if(a>b){
s = b;
b = a;
a = s;
}
if(a>c){
s = c;
c = a;
a = s;
}
if(b>c){
s = c;
c = b;
b = s;
}
System.out.println(a+"/"+b+"/"+c);
}
/**
* 通过键盘输入年月日,
计算该日期在这一年已经过了多少天
*/
public void day(){
sc = new Scanner(System.in);
System.out.println("请输入年:");
a = sc.nextInt();
System.out.println("请输入月:");
b = sc.nextInt();
System.out.println("请输入日:");
c = sc.nextInt();
// 过了多少天其实本质就是叠加和
// 那么以月为变量进行统计,当月不算,过去的月数天数+当月的天数
switch(b-1){
// 若b当月为12月份,则b-1=11月份
case 11:
sum += 30;
case 10:
sum += 31;
case 9:
sum += 30;
case 8:
sum += 31;
case 7:
sum += 31;
case 6:
sum += 30;
case 5:
sum += 31;
case 4:
sum += 30;
case 3:
sum += 31;
case 2:
if(a%4==0&&a%100!=0||a%400==0){
sum += 29;
}else sum += 28;
case 1:
sum += 31;
}
sum += c;
System.out.println("这一年已经过了"+sum+"天!");
if(a%4==0&&a%100!=0||a%400==0){
s = 366;
}else s = 365;
System.out.print("这一年还剩下"+(s-sum)+"天");
}
/**
* 读入一个三位数,计算其各位数字之和。
例如:123各位数字之和为6
*/
private void threeNumSum_print(){
System.out.println("计算三位数各位数字之和,请输入要计算的三位数:");
sc = new Scanner(System.in);
s = sc.nextInt();
threeNumSum();
}
private void threeNumSum(){
// 既然要输入三位数,那么就不让输入超过三位数
if(s<100||s>999){
System.out.println("输入有误,请输入三位数:");
s = sc.nextInt();
threeNumSum();
}else {
int one = s%10;//个位数
int two = s/10%10;//十位数
int three = s/100;//百位数
s = one + two + three;
System.out.println("个位="+one+"十位="+two+"百位="+three+"该数个位之和:"+s);
System.out.println("请继续输入:");
s = sc.nextInt();
threeNumSum();
}
}
/**
* 1-100之和
*/
private void sum100(){
for(int i=1;i<=100;i++){
sum += i;
}
System.out.println("1-100和="+sum);
}
/**
* 求1-100偶数之和,
*/
private void oushu(){
for(int i=1;i<=100;i++){
if( i%2==0){
sum += i;
}
}
System.out.println("偶数和:"+sum);
for(int i=2;i<=100;i+=2){
s += i;
}
System.out.println("另种方法的偶数和:"+s);
}
/**
* 求1到100之间能被3整数但不能被5整除的所有数字之和
* @param args
*/
private void intThreeFive(){
for(int i=1;i<=100;i++){
if (i%3==0&&i%5!=0){
System.out.println(i);
sum += i;
}
}
System.out.println("sum="+sum);
}
/**
* 求1!+2!+3!+4!+...+10!
n! = (n-1)!*n 最好用long型
10! = 1*2*3*4*..*10
第一循环 要求得1的阶乘 并累计为和
第二循环 得到2的阶乘 并累计为和
第三循环 得到3的阶乘 并累计为和
...
第十循环 得到10的阶乘 并累计为和
* @param args
*/
private void jieCeng(){
s= 1;
for(int i = 1;i<=10;i++){
s *= i;
sum += s;
}
System.out.println("10!sum="+sum);
}
/**
* 通过键盘输入一个数字,打印其所有因子
并对所有因子求和(因子不包含自己)
因子就是能被这个数整除的数字
10的因子有 1 2 5
* @param args
*/
private void yinZi(){
sc = new Scanner(System.in);
System.out.println("请输入:");
s = sc.nextInt();
// 一个数除以大于自己一半的数字肯定会有余数的,那么他的因子最大也就是s/2了,自然也就不包括自己了
for(int i = 1;i<=s/2;i++){
if(s%i==0){
sum += i;
System.out.println(s+"的因子为"+"("+i+")");
}
}
System.out.println("因子和="+sum);
}
/**
* 通过键盘输入一个数字,判断该数字是否为素数
指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数(不包括0)整除的数。
拿到一个数字后就从2开始除一直除到n-1如果都有余数,
说明该数字是素数 只要除到n/2即可
* @param args
*/
private void suNum(){
sc = new Scanner(System.in);
System.out.println("请输入:");
s = sc.nextInt();
for(int i=s-1;i>1;i--){
if(s%i!=0){
System.out.println(s+"为素数");
}else System.out.println(s+"不为素数");
}
}
/**
* 打印100-1000所有的素数
* @param args
*/
private void printSuNum(){
int j;
for(int i=100;i<=1000;i++){
// 我拿这个数一直除以2,除到这个数的一半就可以了,看效果
for( j=2;j<=i/2;j++){
if(i%j==0){
break;
}
}
System.out.println(j);
if(j>i/2){
System.out.println(i);
}
}
}
/**
* *
**
***
****
*****通过键盘输入行数
打印图形有行有列,就是两层循环
外层循环控制行,内层循环控制列
打印九九乘法表!
* @param args
*/
private void jiujiu(){
for(int i = 1;i<=9;i++){
for(int j = 1;j<=i;j++){
System.out.print(j+"*"+i+"\t\t");
}
System.out.println();
}
}
/**
********
*******
******
*****
****
***
**
* 打印图形的习惯--》上面宽外层循环从大开始
每行都有若干个空格和若干个星号组成,
需要有一个循环来控制空格,还要有一个循环控制星号
内层循环的控制一定和外层循环是相关的
* @param args
*/
private void bigTu(){
for(int i = 10;i>=1;i--){//控制行
for(int j=1;j<=10-i;j++){//控制列
System.out.print(" ");
}
for(int k=1;k<=i;k++){
System.out.print("*");
}
System.out.println();
}
}
/* *
***
*****
*******
*********
*******
*****
***
*
*/
private void duichen(){
for(int i = 1;i<=5;i++){
// 先打印上半部分
for(int j=1;j<=5-i;j++){ //控制空格的输出,刨除需要输出*的位置
System.out.print(" ");
}
for(int k = 1;k<=2*i-1;k++){//什么位置需要输出*呢?
System.out.print("*");
}
System.out.println();
}
for(int m=4;m>=1;m--){
for(int g=1;g<=5-m;g++){
System.out.print(" ");
}
for(int n=1;n<=2*m-1;n++){
System.out.print("*");
}
System.out.println();
}
}
/**
A
BBB
CCCCC
DDDDDDD
EEEEEEEEE
* @param args
*/
private void ziMuTa(){
// 上面窄,外层循环从小开始,那么需要1个循环控制空格,再需要一个循环控制字母;
for(int i=1;i<=5;i++){
// 首先控制空格,空格是由大到小,那么就从大开始循环打印空格
for(int j=9-i;j>=1;j--){
System.out.print(" ");
}
// 接下来字母是从小到大的排列,那么就从小开始循环
for(int m=1;m<=2*i-1;m++){
System.out.printf(" %c",i+64);
}
System.out.println();
}
}
/**
*
* @param args
1
121
12321
1234321
123454321
12345654321
*/
private void numTa(){
int c = 0;
// 问题分析:1.外层循环为6层,2.然后对每行的空格进行控制输出;3.同时再对数字进行控制
for(int i = 1;i<=6;i++){
for(int j=1;j<=6-i;j++){
System.out.print(" ");
}
for(int k = 1;k<=2*i-1;k++){
// 那么肯定跟k有关系,k是什么,k是数字de循环,来看一下层数,与每行数字个数和数字本身之间的关系,很好的找出了规律
/* for(int m=k;m>i;m--){ //对数字本身关系做个循环找规律
System.out.print(k-i);
}*/
if(k>i){
System.out.print(2*i-k);
}else System.out.print(k);
}
System.out.println();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Shuru shuru = new Shuru();
// shuru.age();
// shuru.threeMax();
// shuru.day();
// shuru.threeNumSum_print();
// shuru.sum100();
// shuru.oushu();
// shuru.intThreeFive();
// shuru.jieCeng();
// shuru.yinZi();
// shuru.suNum();
// shuru.printSuNum();
// shuru.jiujiu();
// shuru.bigTu();
// shuru.duichen();
// shuru.ziMuTa();
shuru.numTa();
}
}
本文介绍Java中的循环结构应用,包括如何使用循环打印图形、计算数值等。通过具体实例讲解for循环、while循环的使用方法,并演示如何通过循环解决实际问题。
2436

被折叠的 条评论
为什么被折叠?



