Java习题

1.复数相乘

一个复数类有:
(1)一个无参的构造函数、一个带2个参数的构造函数;
(2)两个复数相乘的函数;
(3)复数输出函数
完善测试类的main函数,在main函数中输入两个复数的实部和虚部,输出两个复数的乘积。
样例输入1:
3 2
4 -5
样例输出1:
22-7i

样例输入2
3 2
4 -1
样例输出2
14+5i

样例输入3
3 2
3 -2
样例输出3
13

代码:

import java.util.Scanner;

class Complex {

    int realPart;

    int imaginPart;

    Complex() {

                 realPart=0;

                 imaginPart=0;

 } 

    Complex(int realPart,int imaginPart) {

        this.realPart=realPart;

        this.imaginPart=imaginPart;

    } 

    //两个复数相乘

    Complex mul(Complex a) {

        Complex x = new Complex();

        x.realPart=realPart*a.realPart-imaginPart*a.imaginPart;

        x.imaginPart=a.realPart*imaginPart+realPart*a.imaginPart;

        return x;

    }

    //按照a+bi的形式输出复数    

    public String toString(){

        if(imaginPart>0)

            return realPart+"+"+imaginPart+"i";

        if(imaginPart<0)

            return realPart+"-"+imaginPart*(-1)+"i";

        return ""+realPart;

    }

}

    

public class ComplexTest {

    public static void main(String[] args) {

        Scanner sc=new Scanner(System.in);

        int i = sc.nextInt();

        int j = sc.nextInt();

        int m = sc.nextInt();

        int n = sc.nextInt();

        Complex c = new Complex(i,j);

        Complex t = new Complex(m,n);

        c.mul(t);

        System.out.println(c.mul(t).toString());

    }

}

2.字符查找

输入一个字符串str和一个字符c,输出c在str中的位置。如果在字符串str中不存在字符c,则输出“not found”。
样例输入1:
abcd efba
b 样例输出1:
1

样例输入2:
abcdef gh
x 样例输出2:
not found

代码:

import java.util.Scanner;

public class FoundChar {

    public static void main(String[] args) {

        Scanner sc=new Scanner(System.in);

        String str=sc.nextLine();

        String c=sc.nextLine();

        int a=str.indexOf(c);

        if(a==-1){

            System.out.println("not found");

        }else{

            System.out.println(a);

        }

 }

}

3.字符串出现次数

输入两个字符串str1、str2,统计字符串str2出现在str1中的次数。
样例输入:
aaas lkaaas
as
样例输出:
2

代码:

import java.util.Scanner;

public class SubStringCount {

 public static void main(String[] args) {

        Scanner sc=new Scanner(System.in); //定义扫描键盘输入的对象

         String str1 = sc .nextLine();

         String str2= sc .nextLine();

        char[] charArray = str1. toCharArray();

        char[] charArray2 = str2. toCharArray();

        int length = charArray2. length;

        int count=0;

        int cur = 0;

for(int i=0;i<charArray.length;i++) {

        char c1 =charArray[i];

        char c2= charArray2[cur];

        if(c1==c2){

            if(cur == (length -1)){

                count++;

            }else{

                cur++;

            }

        }else{

            cur=0;

            }

        }

        System.out.println(count);

    }

}

4,统计字符个数

从键盘输入一串字符,输出有多少个不同的字符、每个字符出现的次数(按字符出现的顺序输出)。
样例输入: bac4a,ab
样例输出
b:2
a:3
c:1
4:1
,:
1

代码:

import java.util.Scanner;

public class CharCount {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in); 

        String str=sc.nextLine();

    StringBuffer k=new StringBuffer(str);

    int length=k.length();

    String a;

    int index,sum;

 for(int i=0;i<k.length();) {

    sum=0;

   a=k.substring(0,1);

    index=k.indexOf(a);

    while(index!=-1) {

         sum++;

         k.deleteCharAt(index);

         index=k.indexOf(a,index);

     } 

     System.out.println(a+":"+sum);

 }

}

   }

5.最长的单词

从键盘输入一段文字,以回车结束。一段文字由各个英语单词组成,单词之间用,.?!以及一个以上的空格分隔,要求输出最长的字符串。
样例输入:
I am,you list.fast?java!file
样例输出:
list
fast
java
file

代码:

import java.util.Scanner;

public class LongestWord {

    public static void main(String[] args) {

        Scanner sc=new Scanner(System.in);

        String s=sc.nextLine();

        //以,.?!及一个以上的空格作为分隔符(\\是转义符号)

        String word[]=s.split(",|\\.|\\?|\\!| +");

        String s1="";

        int l=0;

        for(String s2:word) {

            if(s1.length()<s2.length()) {

                s1=s2;

                l=s2.length();

            }

        }

        for(String s2:word) {

            if(s2.length()>=l) {

                System.out.println(s2);

            }

        }


   }

}

6.验证哥德巴赫猜想

从键盘输入一个偶数n(6≤n≤100)求两个素数m1和m2,使得n=m1+m2。如果符合条件的数有多组,要求m1尽可能小,m2尽可能大。
如:10=3+7=5+5,只有3+7符合条件(3最小,7最大)。
所以如果n=10,则m1=3,m2=7
如果输入的n是奇数,则输出error
输入样例1:
6
输出样例1:(说明两个素数中间用英文逗号分隔)
3,3

输入样例2:
10
输出样例2:
3,7
输入样例3:
9
输出样例3:
error

代码:

import java.util.Scanner; 

public class Test{

   public static boolean isPrime(int num){

        for(int j=2;j<num; j++){

            if(num%j==0)//取余没余数,为素数

                return false;

        }

        return true;

    }

 public static void main(String[] args){

        Scanner s=new Scanner(System.in);

        int num=s.nextInt();

        if(num%2==0){

            for(int i=2;i<=num/2;i++){

                if(isPrime(i)&&isPrime(num-i)){//判断 i和 (num-i)是不是质数

                    if(i>(num-i)){

                        System.out.println((num-i)+","+i);

                        break;

                    }

                    else if(i<(num-i)){

                    System.out.println(i+","+(num-i));

                    break;

                    }

                    else if(i==(num-i)){

                        System.out.println(i+","+(num-i));

                        break;

                    }

                }

            }

        }

        else if(num%2!=0){

            System.out.println("error");

        }

        s.close(); 

     }

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值