编译错误

1.需要<标识符>5
String name = "张三";
		int age = "20";
		String address = "哈哈屋";
		//向控制台输出:我的名字叫张三,今年20岁了,我住在哈哈屋。
		System.out.println("我的名字叫" + name,"今年" + age + "了","我住在" + address);
//字符串拼接时,需要注意 " + "和 " , " 的位置,此处应为:
System.out.println("我的名字叫" + name + ",今年" + age + "岁了,我住在" + address);
//注意断句

——————————————————————————————————————————————————————

2.找不到符号5
import java.util.Scanner;
class h {
	public static void main(String [] args) {
		Scanner x = new Scanner(System.in);
		int a = x.nextInt();
		System.out.println("...");
	}
}
import java.util.Scanner;
class h {
	public static void main(String [] args) {
		Scanner x = new Scanner(System.in);
		int a = x.nextInt();
		System.out.println("...");
	}
}
/*
x.nextInt后面有括号 格式为:  x.nextInt();
*/
3.层极问题:
题目:使用嵌套循环打印三角形,如下:
        *
       ***
      *****
     *******
    *********
我的做法:
使用嵌套循环打印三角形,如下:
class Day5Homework02 {
	public static void main(String[] args) {
		for(int a = 1; a <= 9;a+=2){
			for(int b = 1; b<= a;b++){
				for(int c = 4; c>= b; c--){					
					System.out.print("-");					
				}System.out.print("*");
			}System.out.println();
		}
	}
}

正确答案:打印“空格”和“*”是在同一层级。

//方法二:
class Day5Homework02 {
	public static void main(String[] args) {
		for(int a = 1; a <= 9;a+=2){
			for(int c = 4; c>= a/2; c--){
					System.out.print(" ");
			}
			for(int b = 1; b<= a;b++){				
					System.out.print("*");
			}System.out.println();
		}
	}
}

扩展:输入一个数字,实现类似效果

public class Test07 {
	public static void main(String [] args) {
		java.util.Scanner a = new java.util.Scanner(System.in);
		System.out.println("请输入一个数字");
		int b = a.nextInt();
		for(int c = 1; c <= b; c++) {//c为行号,b为行数,此处即为输入一个b行数,循环b行
			for(int d = 0; d < b - c; d++){//空格数为行数-行号
				System.out.print(" ");
			}
			for(int e = 0; e < c * 2 - 1; e++){//*号数为行号的2倍-1
				System.out.print("*");
			}System.out.println();
		}
	}
}
4.使用嵌套循环计算 1+2!+3!+…+20!的和
class Day5Homework05 {
	public static void main(String [] args) {
		long b=1L;
		long c=1L;
		for(long a=1;a<=20;a++){
			b*=a;
			c+=b;
		}System.out.println(c);
	}
}

5.错误: 非法字符: ‘\uff1b’
public class Day05Homework4 {
	public static void main(String [] args) {
		int a = 0;
		for (int b = 100; b <= 999; b++){
			int ge = b % 10;
			int shi = b % 100 /10;
			int bai = b / 100;
			int A = 1;
			int B = 1;
			int C = 1;
			for(int d = 1; d < 4; d++){
				A = A * ge;
				B = B * shi;
				C = C * bai;
			}if (b == A+B+C) {
				System.out.println("这是一个水仙花数"+b);
					a++;
			}
		}System.out.println("水仙花数有:"+a+"个");
	}
}

原因:标点符号的中英文切换问题,将 ; 打成 ;

public class Day05Homework4 {
	public static void main(String [] args) {
		int a = 0;
		for (int b = 100; b <= 999; b++){
			int ge = b % 10;
			int shi = b % 100 /10;
			int bai = b / 100;
			int A = 1;
			int B = 1;
			int C = 1;
			for(int d = 1; d < 4; d++){
				A = A * ge;
				B = B * shi;
				C = C * bai;
			}if (b == A+B+C) {
				System.out.println("这是一个水仙花数"+b);
					a++;
			}
		}System.out.println("水仙花数有:"+a+"个");
	}
}
6.在外部打布尔标记及三元运算符的运用!
//输入一个数,判断它是否为质数!
public class Test06 {
	public static void main(String [] args){
		java.util.Scanner a = new java.util.Scanner(System.in);
		System.out.println("请输入一个整数:");
		int b = a.nextInt();
		boolean  d = true;
		for(int c = 2; c < b; c++){
			if(b % c == 0){
			d = false;
			break;}
		}System.out.println(b+( d ?"是":"不是")+"质数");
	}
}
7.给一个数,求大于它的最小质数
//未完成
public class MethodTest02 {
	public static void main(String [] args){
		java.util.Scanner a = new java.util.Scanner(System.in);
		System.out.println("请输入一个正整数:");
		int b = a.nextInt();
		int c = MethodTest02.prime(b);
	}
	public static int prime(int a){
		a++;
		for(int c = 1; c){}
		for(int b = 2; b <= a; b++){
			if( a % b == 0){
			}else{
			}
		}return a;
	}
}
问题:首先就是未想到利用死循环来进行增加数字的值;其次未想到把方法进行分解;还有判断是否为质数那一步,如果不是质数就提前返回false,如果是质数,那么前面的语句是不会执行的,最终返回的结果就是true,;
//输入一个数字,求比它大的最小质数。
public class MethodTest02 {
	public static void main(String [] args){
		java.util.Scanner a = new java.util.Scanner(System.in);
		System.out.println("请输入一个正整数:");
		int b = a.nextInt();
		int c = MethodTest02.primeMin(b);
		System.out.println("比这个数大的最小质数为:"+ c);
	}
	public static int primeMin(int a){
		while(true){
			a++;
			boolean b = MethodTest02.prime(a);
			if(b==true){
			break;
			}
		}return a;
	}
	public static boolean prime(int a){
		for(int b = 2; b < a; b++){
			if( a % b ==0){
				return false;
			}
		}return true;
	}
}
还可以缩减为以下(方法可到结果里面!)
//输入一个数字,求比它大的最小质数。(精简版)
public class MethodTest02 {
	public static void main(String [] args){
		java.util.Scanner a = new java.util.Scanner(System.in);
		System.out.println("请输入一个正整数:");
		int b = a.nextInt();
		int c = MethodTest02.primeMin(b);
		System.out.println("比这个数大的最小质数为:"+ c);
	}
	public static int primeMin(int a){
		while(!MethodTest02.prime(++a)){
		}return a;
	}
	public static boolean prime(int a){
		for(int b = 2; b < a; b++){
			if( a % b ==0){
				return false;
			}
		}return true;
	}
}
8.一只猴子第一天接下若干个桃子,每天吃一半加一个,第10天只有一个了,问摘了多少个?
public class Monkey {
	public static void main(String [] args) {
		int a = 1;
		for (int b = 2; b <= 10; b++) {
			a = 2a+1;
		}System.out.println(a);
	}
}
问题:计算的先后问题,反过来算的话应该是先加一个再*2;
public class Monkey {
	public static void main(String [] args) {
		int a = 1;
		for (int b = 2; b <= 10; b++) {
			a = (a+1)*2;
		}System.out.println(a);
	}
}
9.一球从100米落下,每次落地反回一半,求10次落地时,共经过多少米?
public class boll {
	public static void main(String [] args) {
		int a = 100;
		int c = 0;
		for (int b = 10; b > 0; b--) {
			c += a;
			a /= 2;			
		}System.out.println(c);
	}
}
10.封装一个方法,传入一个字符,如果是大写那么转化小写然后返回,否则保持不变返回
//封装一个方法,传入一个字符,如果是大写那么转化小写然后返回,否则保持不变返回
public class Day07Homework01 {
	public static void main(String [] args) {
		java.util.Scanner a = new java.util.Scanner(System.in);
		char b = a.nextChar();
		S.p(BSC(b));
	}
	public static char BSC(char a){
		if(a >= 65 && a <= 90){
			a += 32;
			return a;
		}return a;
	}
}
问题:输入一个字符时,不能直接用nextChar,里面没有char,需要写成 next().charAt(0);
//封装一个方法,传入一个字符,如果是大写那么转化小写然后返回,否则保持不变返回
public class Day07Homework01 {
	public static void main(String [] args) {
		java.util.Scanner a = new java.util.Scanner(System.in);
		char b = a.next().charAt(0);
		S.p(BSC(b));
	}
	public static char BSC(char a){
		if(a >= 65 && a <= 90){
			a += 32;
			return a;
		}return a;
	}
}
11.请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个字母。
import java.util.Scanner;
/*
 请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个字母。
 */
public class Test22_26 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个字母");
		String s = sc.next();
		if (s.equals("t")) {
			System.out.println("请再输入一个字母");
			String t = sc.next();
			if(t.equals("u") ) {
				System.out.println("今天星期二");
			}else if(t.equals( "h")) {
				System.out.println("今天星期四");
			}else {
				System.out.println("你的输入有误");
			}	
		}else if (s.equals("s") ) {
			System.out.println("请再输入一个字母");
			String r = sc.next();
			if(r.equals("a") ) {
				System.out.println("今天星期六");
			}else if(r.equals("u")) {
				System.out.println("今天星期天");
			}else {
				System.out.println("你的输入有误");
			}
		}else if(s.equals("m")) {
			System.out.println("今天星期一");
		}else if(s.equals("w")) {
			System.out.println("今天星期三");
		}else if(s.equals("f")) {
			System.out.println("今天星期五");
		}else {
			System.out.println("你的输入有误");
		}
	}

}
String字符串不能用 == 和 != 进行比较,因为它的变量存储的是一个地址,对象不同,地址就不同,需要用S1.equals(s2)来进行比较
12.求1-100的素数
public class Test23_27 {
	public static void main(String[] args) {
		for(int i = 2; i <= 100; i++) {
			boolean a = true;//标记素数
			for(int j = 2; j < i; j++) {
				if(i % j == 0) {
					a = false;//如果不是素数就变为false
					break;
				}
			}//最终判断
			if(a == true) {
				System.out.println(i);
			}
		}
	}

}
要学会在外部打标记
13、对10个数进行排序—选择排序
public class Test25_28 {
	public static void main(String[] args) {
		int[] array = {54,9,16,79,13,564,989,151,9999,123};
		
		for(int i = 0; i <= array.length-1; i++) {
			int max = i;//最大值脚标
			for(int j = i+1; j <= array.length-1; j++) {               
				if(array[max] < array[j]) {
                    //和后面的数相比 ,如果小于,就互换脚标
                    //这是不能写i,因为互换了索引之后不再是和“一开始”的索引比
					max = j;
				}
			}
			if(max != i) {
				int temp = array[i];
				array[i] = array[max];
				array[max] = temp;
			}
		}
		for(int a = 0; a <= array.length-1; a++) {
			System.out.print(array[a]+" ");
		}
	}
}
拿一个数和其他的数相比,如果数字比它大,互换索引,最终和开始的索引进行比较,如果不同,就互换值。
14、打印出杨辉三角形
/*        1 
         1 1 
        1 2 1 
       1 3 3 1 
      1 4 6 4 1 
     1 5 10 10 5 1 
    1 6 15 20 15 6 1 
   1 7 21 35 35 21 7 1 
  1 8 28 56 70 56 28 8 1 
 1 9 36 84 126 126 84 36 9 1 
 */
public class Test31_33 {
	public static void main(String[] args) {
		int[][] arr = new int[10][10];//定义一个10行10列的二维数组		
		for(int i = 0; i < 10; i++) {//外层循环控制行
			for(int j = 10; j > i; j--) {
				System.out.print(" ");
			}
			for(int j = 0; j <=i; j++) {				
				if(j == 0|| i == j) {//当行行为0和行数等于列数的时候,值为1
					arr[i][j] = 1;
					System.out.print(arr[i][j]+" ");
				}else {
					arr[i][j] = arr[i-1][j-1]+arr[i-1][j];//下面的元素是上面两个元素的和
					System.out.print(arr[i][j]+" ");
				}
			}System.out.println();
		}
	}

}
要学会想到二维数组来解决问题,为了方便,可以先做一起直角三角形出来,再考虑位置;在考虑和的时候也不用使用循环,因为使用循环会使数据只是发生改变,并不会求和;
15、输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组
import java.util.Scanner;
public class Test32_34 {
	public static void main(String[] args) {
		Scanner sc =new Scanner(System.in);	
		System.out.println("请输入数组元素个数");
		int n = sc.nextInt();
		int[] arr = new int[n];
		for(int a = 0; a <= n-1; a++) {
			System.out.println("请输入"+n+"个数字,现在输入第"+(a+1)+"个。");
			arr[a] = sc.nextInt();
		}System.out.print("输入的数组arr={");
		for(int i = 0; i <= arr.length-1; i++) {
			System.out.print(arr[i]+" ");
		}System.out.println("}");
		//------------------交换大元素-----------------------
		int temp=0;
		for(int i = 1; i <= arr.length-1; i++) {
			if(arr[temp] < arr[i]) {
				temp = i;
			}
		}
		int temp1 = arr[0];
		arr[0] = arr[temp];
		arr[temp] = temp1;
		System.out.print("交换大元素后为:");
		for(int i = 0; i <= arr.length-1; i++) {		
			System.out.print(arr[i]+" ");
		}System.out.println();
		//---------------------交换小元素---------------------
		int temp2 = arr.length-2;
		for(int i = 0; i <= arr.length-1; i++) {
			if(arr[temp2] >= arr[i]) {
				temp2 = i;
			}
		}
		int temp3 = arr[arr.length-1];
		arr[arr.length-1] = arr[temp2];
		arr[temp2] = temp3;
		System.out.print("交换小元素后为:");
		for(int i = 0; i <= arr.length-1; i++) {			
			System.out.print(arr[i]+" ");
		}
	}
}
要学会想到在这里面,在比较的时候先不更换元素的值,先把那个索引给标记存储起来,最后比较完了才开始元素值的交换。
16、判断x,y各为多少
public class T{
    public static void main(String[] args){
        int x = 4,y = 5;
        if(x++>4&&++y>5){
            x++;
        }System.out.println(x+" "+y);
    }
}

++后面表示先赋值再加1;另外还有&&表示短路与,前面不满足就无需计算后面的表达式。答案为5,5。

17、求用0-7来组成一个8位数,在数字不重复的情况下,有多少个奇数。
public class Test40_43 {
	public static void main(String[] args) {	
		int x = 0;
		for(int i = 1; i <= 7; i+=2) {
			for(int a = 1; a <= 7 ; a++) {
				int sum = 0;
				if(a != i) {
					for(int b = 0; b <= 7; b++) {
						if(b != a && b!= i) {
							for(int c = 0; c <= 7; c++) {
								if(c != b && c != a && c!= i) {
									for(int d = 0; d <= 7; d++) {
										if(d != c && d != b && d != a && d!= i) {
											for(int e = 0; e <= 7; e++) {
												if(e != d && e != c && e != b && e != a && e!= i) {
													for(int f = 0; f <= 7; f++) {
														if(f != e && f != d && f != c && f != b && f != a && f!= i) {
															for(int g = 0; g <=7; g++) {
																if(g != f && g != e && g != d && g != c && g != b && g != a && g!= i) {
																	sum  = g*10+f*100+e*1000+d*10000+c*100000+b*1000000+a*10000000+i;																	
																	x++;
																	System.out.println("第"+x+"个奇数为"+sum);
																}
															}
														}
													}
												}
											}
										}
									}
								}
							}
						}								
					}
				}
			}
		}System.out.println("一共能组成"+x+"个不同的奇数");			
	}
}
18、三元运算符
public class Demo_1 {

	public static void main(String[] args) {
		int[] arr = {1,2,3,4,5,6};
		String s = "[";
		String a = "";
		for(int i = 0;i<arr.length;i++) {
			 i != arr.length - 1 ? s += arr[i]+"," : s += arr[i]+"]";//报错
		}
		System.out.println(s.toString());	
	}	
}

问题:三元运算符的结果没有变量进行接收

public class Demo_1 {

	public static void main(String[] args) {
		int[] arr = {1,2,3,4,5,6};
		String s = "[";
		String a = "";
		for(int i = 0;i<arr.length;i++) {
			s = i != arr.length - 1 ? s + arr[i]+"," : s + arr[i]+"]";
		}
		System.out.println(s.toString());	
	}	
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值