4.1
/*
构造一个函数来进行。函数的功能是返回一个数字的所有位数相加。我们在函数中,写入一个循环,每次对传入的值进行取余,
然后加到sum变量中,然后函数除以10,当函数为0时退出循环,返回这个数值。
*/
import java.util.*;
class Home04_01 {
public static int add(int n){
int sum = 0;//计入每一位相加的和
while (n!=0){
sum += n%10;
n/=10;
}
return sum;//返回数字
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int num = in.nextInt();
System.out.println(add(num));//调用函数
}
}
4.2
import java.util.Scanner;
class Demo04_02{
public static void main(String[] args){
//1.提示用户输入一个数字
Scanner scanner=new Scanner(System.in);
System.out.print("请输入一个数字:");
int num=scanner.nextInt();
//2.判断该数字是否是一个回文
if(isPalindrome(num)){ // pause1
System.out.println("是回文");
}else{
System.out.println("不是回文");
}
//return ;
}
public static boolean isPalindrome(int num){
//1.先计算该数字的反序
//2.对比反序的数字和数字本身
//pasue 2
return reverse(num)==num;
}
public static int reverse(int num){
int sum=0;
while(true){
sum=sum*10+num%10;
num/=10;
if(num==0){
return sum;
}
}
}
}
4.3
/*
每一行先输出空格,输出的空格数就是n-行数,然后输出n到1的数字。
*/
import java.util.Scanner;
class Home04_03 {
public static void go(int n ){
for (int i = 1;i<=n;i++){
for (int j = 1;j<=n-i;j++){ //输出图形
System.out.print(" ");
}
for (int k = i;k>0;k--){
System.out.print(k);
}
System.out.println();
}
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
go(n);//传入函数
}
}
4.4
import java.util.*;
class Home04_04 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入一个密码: ");
String password = input.next();
password(password);
}
public static void password (String password) {
int biaozhi = 1;
if(password.length() >= 8){
password = password.toUpperCase();
for(int i = 0, count = 0; i < password.length(); i++) {
if((password.charAt(i) >= '0' && password.charAt(i) <='9'||(password.charAt(i) >= 'A' && password.charAt(i)< 'Z'))){
if(password.charAt(i) >= '0' && password.charAt(i) <='9') {
++count;
if(count >= 2)
System.out.println("ValidPassword");
else
System.out.println("InValidPassword");
}
else
System.out.println("InvalidPassword");
System.exit(0 );
}
}
}else
System.out.println("InValidPassword");
}
}
4.5
lass Demo04_05{
public static void main(String[] args){
System.out.println(sqrt(9));
}
public static double sqrt(long n){
double lastGuess=1;
double nextGuess=(lastGuess+n/lastGuess)/2;
while(true){
if(Math.abs(nextGuess-lastGuess)<0.00001){
return nextGuess;
}
lastGuess=nextGuess;
nextGuess=(lastGuess+n/lastGuess)/2;
}
}
}
4.6
class Demo04_06{
public static void main(String[] args){
int count=0; //表示回文素数的个数
int num=2; //表示可能的回文素数的数字 从2开始~?
while(true){
//如果num是 回文素数
if(isHuiWenAndSuShu(num)){
count++;
System.out.print(num+" ");
if(count%10==0){
System.out.println();
}
}
if(count==100){
break;
}
num++;
}
}
public static boolean isHuiWenAndSuShu(int num){
return isHuiWen(num)&&isSuShu(num);
}
public static boolean isHuiWen(int num){
return reverse(num)==num;
}
public static int reverse(int num){
int sum=0;
while(true){
sum=sum*10+num%10;
num/=10;
if(num==0){
return sum;
}
}
}
public static boolean isSuShu(int num){
for(int i=2;i<=num/2;i++){
if(num%i==0){
return false;
}
}
return true;
}
}
4.7
class Demo04_07{
public static void main(String[] args){
int count=0;
int num=2;
while(true){
if(isFanZhuanSuShu(num)){
count++;
System.out.print(num+" ");
if(count%10==0){
System.out.println();
}
}
if(count==100){
return; //结束当前函数
}
num++;
}
}
//1.本身是素数
//2.反转之后也是素数
//3.不能是回文
//素数() 反转() 回文功能()
public static boolean isFanZhuanSuShu(int num){
return isSuShu(num)&&isSuShu(reverse(num))&&!isHuiWen(num);
}
//回文功能
public static boolean isHuiWen(int num){
return reverse(num)==num;
}
//素数功能
public static boolean isSuShu(int num){
for(int i=2;i<=num/2;i++){
if(num%i==0){
return false;
}
}
return true;
}
//反转功能
public static int reverse(int num){
int sum=0;
while(true){
sum=sum*10+num%10;
num/=10;
if(num==0){
return sum;
}
}
}
}
4.8
/*
先读取一个字符串和一个字符,然后调用函数,遍历一遍这个字符串即可,如果出现一次就计数器加一,最后返回计数器结果输出即可
*/
import java.util.Scanner;
class Home04_08{
public static int count(String a, char b) {
int count = 0;
for (int i = 0;i<a.length();i++) {
if (a.charAt(i)==b) {
count ++;//计数器加一
}
}
return count;
}
public static void main(String[] args) {
Scanner in = new Scanner (System.in);
System.out.print("输入一个字符串以及字符");
String s = in.next(); //输入字符串
char a = in.next().charAt(0);//输入字符
int b = count(s,a);//调用函数
System.out.print(b);
}
}
4.9
/*
从字符串的最右边开始遍历字符串,一次输出即可
*/
import java.util.Scanner;
class Home04_09{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("输入字符串");//提示输入
String s = in.next();//读取字符串
for (int i = s.length()-1;i>=0;i--) {
System.out.print(s.charAt(i));//从右边开始输出。
}
}
}
4.10
/*
遍历一遍字符串,判断是否大于等于A小于等于Z,如果是计数器加一,最后输出
*/
import java.util.Scanner;
class Home04_10{
public static void main(String[] args) {
Scanner in = new Scanner (System.in);
System.out.print("请输入字符串:");
String s = in.next();//读取字符串
int count = 0;
for (int i = 0;i<s.length();i++) {
if (s.charAt(i)>='A'&&s.charAt(i)<='Z') {
count ++;//判断是否为大写字母
}
}
System.out.print(count);
}
}
4.11
/*
先找出来小的字符串,然后从小的的最左边开始判断,看每几个字符是否时大的的开头,如果不是,就退出循环,每次计数器加一,
如果计数器为0就是没有,否则输出任意一个字符串的前count个字符即可
*/
import java.util.Scanner;
class Home04_11{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("请输入第一个字符串: ");
System.out.print("请输入第二个字符串: ");
String a = in.nextLine();
String b = in.nextLine();//读取字符串
String c = a.length()>b.length()?a:b;//一个等于大的
String d = a.length()>b.length()?b:a;//一个等于小的
int count = 0;//计数器
for (int i = 0;i<d.length();i++){
if(c.startsWith(d.substring(0, i+1))){
count ++;//是开头
}
else{
break;
}
}
if (count==0){
System.out.print("no");//没有的
}
else{
for (int i = 0;i<count;i++){
System.out.print(a.charAt(i));
}
}
}
}
4.12
/*
读取字符串的每一位,知道其对应的阿斯克代码值,如果是字母,就减去55就是对应的十六进制的值,如果是数字,就减去48就是
对应的int的值。最后我们带入公式,定义一个sum,每次加读取的每一位化作数字乘以16的(字符串长度-位数)次方即可。最后输出。
*/
import java.util.Scanner;
class Home04_12{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("请输入一个十六进制数:");
String s = in.next();
int sum = 0;//计算总数
for (int i = 0;i<s.length();i++) {
int a = s.charAt(i)>=65?s.charAt(i)-55:s.charAt(i)-48;
//计算每一位对应的数字
sum+=a*Math.pow(16,s.length()-i-1); //套入公式
}
System.out.print(sum);
}
}