因为最近有多余的时间,可以码字,Java基础虽然真的很基础,但是我学起来又慢又吃力,我想不能忘记自己学语言学不会的样子。
这篇文章我决定写的很零碎,而且想尽量写的很通俗易懂,来锻炼自己说人话的能力。
一起加油。
一:如何对用户的输入进行扫描并进行输出。
代码如下
public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入字符串:");
int a = scanner.nextInt();
int b= scanner.nextInt();
System.out.println(a);
System.out.println(b);
}
}
语法格式
Scanner s = new Scanner(System.in);
创建一个Scanner的对象s这样s就可以调用Scanner这个类中的很多方法啦。
简单解释一句,类就像一个储存很多方法的宝库,而我们要用这个宝库中的方法,就需要给出一个对象,来对方法进行具体的调用。
int I = scanner.nextInt.
意思用scanner下的nextInt方法来接收数据,并把接收的数据的值给I
注1:nextInt与nextLine的区别
nextInt接受数据时,如果输入为247,则输出为247 如果输入为2 4 7,则输出为2,也可以说无法读取并输出空格,以空格来判断结束位置
但是如果是nextLine,输入2 4 7输出2 4 7,以回车来判断结束位置,可以输出空格。
2:如果想使用nextInt同时接收多个数据,并进行输出
很简单,就像我代码写的那样给出int更多的值进行接收就好啦。我发现Java默认int的第一个值a接收输入的第一个数据,int的第二个值b接收第二个数据,这就是顺序结构的特性吧。
二:程序流程的三种结构
顺序选择(条件)与循环结构
1:顺序结构
我上文中的打印就是顺序结构,顺序执行
2:选择结构
if单选择结构
代码展示
if(scanner.hasNextInt()) {
i=scanner.nextInt();//一定要接收数据!!!
System.out.println("你输入的是整数"+i+"耶");
}
如果scanner扫描到有下一个输入值则用i接收上一个输入值并进行打印。
if双选择结构
代码展示
if(scanner.hasNextInt()) {
i=scanner.nextInt();//一定要接收数据!!!
System.out.println("你输入的是整数"+i+"耶");
}else{
System.out.println("哼!输入的根本不是整数");
}
if多选择结构
代码展示
if (score<60){
System.out.println("不及格哦");
}else if (score>=60&&score<70){
System.out.println("成绩为D哦");
}else if (score>=70&&score<80){
System.out.println("成绩为C哦");
}else if (score>=80&&score<90){
System.out.println("成绩为B哦");
}else if(score>=90&&score<=100){
System.out.println("成绩为A哦,真是棒棒呢");
}else{
System.out.println("大笨蛋,输入的是无效成绩呢");
}
嵌套的if循环
代码如下
//嵌套if循环
public static void main(String[] args) {
int i=10,sum=0;
if (i>=0){
i=i-1;
if(sum<=10){
sum=sum+1;
}
}
System.out.println(i);
System.out.println(sum);
}
注意if是条件语句,执行后即跳出,不会循环,所以最后输出i=9,sum=1;
switch选择结构
expression中填写需要被判断的表达式,value则是判断表达式满足的值,若满足则执行语句,代码如下:
System.out.println("请输入你的成绩等级");
Scanner scanner = new Scanner(System.in);
char grade = scanner.next().charAt(0);
switch (grade){
case 'A':
System.out.println("超过百分之九十的同学");
break;
case 'B':
System.out.println("超过百分之八十的同学");
break;
case 'C':
System.out.println("超过百分之七十的同学");
break;
case 'D':
System.out.println("超过百分之六十的同学");
break;
default:
System.out.println("你又输错了大笨蛋");
如果没有break,所有语句都会执行。
3:循环结构
while循环
当布尔表达式为true时循环会一直执行下去
代码:
while (i<=100){
sum = sum +i;
i++;
}
System.out.println(sum);
先判断i是否小于或等于一百,小于则开始执行循环没执行一次i都加1,一直到i等于101时跳出循环。
do-while循环
执行代码语句,然后看是否满足布尔表达式,若满足,则继续执行,若不满足,则跳出。
代码:
int i=100;
do {
i--;
}while (i>=2);//只要i>2开始循环,当i<2的时候终止循环
System.out.println(i);
先进行i=i-1,发现99>2,则继续执行循环,一直到i=1,可以跳出循环。
for循环
代码:
//2:用for循环输出0到1000内所有能被5整除的数,且每三个输出一行。
for (int j = 0; j < 1000; j++) {
if (j%3==0){
System.out.print(j+"\t");
}
if (j%15==0){
System.out.print("\n");
}
}
j=1000的时候跳出循环。
增强for循环
public static void main(String[] args) {
int[] numbers = {1,2,3,4,5,7};
for(int i=0;i<6;i++){
System.out.println(numbers[i]);//看如何输出数组
}
System.out.println("==========");
for(int x:numbers){//此处为for加强循环
System.out.println(x);
}
}
此处的加强循环会直接完成数组的遍历与赋值。
小作业打印九九乘法表
//打印九九乘法表
for (int t = 1; t <= 9; t++) {
for (int k = 1; k <= 9; k++) {
System.out.print(k+"*"+t+"="+t*k+"\t");
}
System.out.print("\n");
}
4:break与continue以及标签
注:continue跳出部分语句,break跳出整个语句。
先看continue,还是上代码:
int i=0;
while (i<100){
i++;
if (i%10==0){
System.out.println();
continue;//跳出重新执行while,从而无法输出SOP
}
System.out.print(i+" ");
}
若i的值为10,则回车,然后遇见continue,continue使i跳出if语句,继续执行while中的内容,所以最后代码输出如下:
如果是break:
int j=0;
while(j<100){
j++;
if (j==30){
break;
}
System.out.print(j+" ");
}
当j=30时,break不仅跳出if,还跳出了while循环,所以循环没有继续执行,只打印到29.
输出结果如下:
标签
outer:即为我们给程序下的标签,如果没有标签,break与continue都会跳到自己想跳的循环,但是如果有标签,则会跳到制定循环。
outer:for (int k=100;k<=150;k++){
for(int q =2;q<=k/2;q++){
if(k%q==0){
continue outer;//continue只能跳出一个语句,加上标签后可以跳出指定语句
}
}
System.out.print(k+" ");
}
此代码为打印100到150的所有质数,质数:大于2,且除了一和本身没有其他因数的数。判断一个数是否为质数,则让它除以小于自己的数,若有余数,则为质数,进行打印,若没有余数,则不为质数,跳到for进行加一继续判断。
最后输出:
小练习:打印三角形
我们想打印这样的三角形:
需要打印三个部分:
上代码!
public static void main(String[] args) {
for (int i = 0; i <= 5; i++) {
for (int j = 5; j >i; j--) {//代码1
System.out.print(" ");
}
for(int j=0;j<i;j++){//代码2
System.out.print("*");
}
for (int j = 1; j < i; j++) {//代码3
System.out.print("*");
}
System.out.println();
}
}
为了看起来更清晰,我再改了一下代码,输出结果长这样:
i=0,代码一执行五次,代码二不执行,代码三不执行;
i=1,代码一执行四次,代码二执行一次,代码三不执行;
i=2,代码一执行三次,代码二执行两次,代码三执行一次;
…
本来想写Debug,但是Java的一些调试操作与查源码我自己也没太搞清楚,决定单独做个专题。
Java代码很基础的一部分已经写完了,在这里感谢狂神,很多东西看代码一点就透,网上很多课程也很好,只是讲的东西太全面,对我来说实在太吃力了,再加上时间的限制,就连狂神说Java完全学也完花了我三个星期。
java下就开始方法的讲解啦,我会写的比这一篇还要详细,学习是一件很值得开心的事情!!!!!