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 Home04_02 {
static int num ;
public static void reverse(int num){
int k = 0,r,l = num;
while (num!=0)//将数字反过来{
r = num%10;
k = k*10+r;
num/=10;
}
if(huiwen(k))//和原数字进行比较 判断是否为回文数{
System.out.println(l+"是回文数");
}
else {
System.out.println(l+"不是回文数");
}
}
public static boolean huiwen (int a){
return num==a?true:false;
}
public static void main(String[] args) {
Scanner in = new Scanner (System.in);
num = in.nextInt();
reverse(num);//调用函数
}
}
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.Scanner;
class Home04_04 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
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
import java.util.Scanner;
class Home04_05 {
public static double sqrt(double n){
double last = 1;
double next = (last +n/last)/2; //套入公式
for (;Math.abs(next-last)>1e-6;){ //两个差特别小时候结束循环
last = next;//这里需要转换
next = (last +n/last)/2;
}
return next;
}
public static void main(String[] args) {
Scanner in = new Scanner (System.in);
double n = in.nextDouble();
System.out.print(sqrt(n)); //输出函数返回的值
}
}
4.6
/*
先判断是否为回文数,在写一个函数判断是否为素数。然后判断如果这个数字即是回文数也是素数则输出这个数字。用一个计数器count来计算输出了几个数字,然后到第十个的时候换行,到第一百个结束就好了
*/
class Home04_06{
public static boolean reverse(int num){ //计算这个数字的倒过来的数字
int k = 0,r,l = num;
while (num!=0){
r = num%10;
k = k*10+r;
num/=10;
}
return huiwen(k,l)?true:false;
}
public static boolean huiwen (int a,int l){ //判断是否为回文数
return l==a?true:false;
}
public static boolean su(int n){ //判断是否为素数
boolean k = true;
for (int i = 2;i<=n/2;i++){
if (n%i==0){
k = false;
break;
}
}
return k == true?true:false;
}
public static void main(String []args){
int count = 0;
for (int i =2;count<100;i++){
if (reverse(i)&&su(i)){
count ++;//计数器
if (count%10==0){
System.out.printf("%-7d\n",i);//一个数字七个单位
}
else {
System.out.printf("%-7d",i);
}
}
}
}
}
4.7
/*
先判断这个数是不是回文数,如果不是,就判断这个数是不是素数。如果是素数,就用一个函数把这个数字倒过来,再判断倒过来的数字
是不是素数,如果是就输出
*/
class Home04_07{
public static boolean reverse(int num){ //判断他的数字到过来
int k = 0,r,l = num;
while (num!=0){
r = num%10;
k = k*10+r;
num/=10;
}
return huiwen(k,l)?true:false;
}
public static boolean huiwen (int a,int l){ //判断是否为回文数
return l==a?true:false;
}
public static boolean su(int n){ //判断是否为素数
boolean k = true;
for (int i = 2;i<=n/2;i++){
if (n%i==0){
k = false;
break;
}
}
return k == true?true:false;
}
public static int fan(int n){
int k = 0,r;
while (n!=0){
r = n%10;
k = k*10+r;
n/=10;
}
return k;
}
public static void main(String []args){
int count = 0;
for (int i =2;count<100;i++){
if (!reverse(i)&&su(i)){
if (su(fan(i))){
count ++;
if (count %10==0){
System.out.printf("%-7d\n",i);//一个数字占七个单位
}
else
System.out.printf("%-7d",i);
}
}
}
}
}
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);
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);
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);
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);
}
}