当前位置:编程学习 > JAVA >>

求几个JAVA的程序编写

2.求Fib级数所有前59项 (1).计算所求级数的平均值。 (2).挑出所有偶数并显示出来 3.从键盘输入一个字符串,然后进行加密,并显示加密前后的字符串。 加密方法: 字母表替换法,即按照下面表列出的替换字符,替换字符串中对应的字符。 明文:a、b、c……z,A、B、C……Z 密文:A、B、C、……Z,a、b、c……z 4、编写Java程序实现一个堆栈,并提供数据入栈和出栈方法。 要求尽量简单,速度
追问:弄错了,第三题密文的顺序是相反的,也就是Z、Y、X……C、B、A和z、y、x……c、b、a怎么改???
答案:第2题,注意 用long ,因为数列的后几项超出了int的范围,溢出。
只有2次循环,效率高。

public class FibNumberSecquence {

    public static void main(String args[])
    {
        long [] fib = new long[59];
        boolean [] flag = new boolean[59];
        long sum ;

        fib[0]=1;
        fib[1]=1;
        sum = fib[0]+fib[1];
        for (int i = 2; i < fib.length; i++) {
            fib[i] = fib[i-1]+fib[i-2];
            sum+=fib[i];
            if (fib[i]%2==0) {
                flag[i] = true;
            }
            else
                flag[i] = false;
        }

        double avg = sum/59;
        System.out.println("平均值:"+avg);

        System.out.println("偶数:");
        for (int i = 2; i < flag.length; i++) {
            if (flag[i]) {
                System.out.println(fib[i]);
            }
        }
    }
} 


第3题:
不需知道'z'和'Z'的ASCI码差值是32,一样可以
import java.util.Scanner;

public class RepleaceCode {

    public static void main(String args[])
    {
        System.out.println("输入原始字符串:");
        Scanner stdin = new Scanner(System.in);
        String str = stdin.nextLine();
        char [] result = new char[str.length()];
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);

            if (c<='z'&&c>='a') {
                c  += ('Z'-'z');
            }
            else if (c<='Z'&&c>='A')
            {
                c  += 'z'-'Z';
            }
            else
            {}
            result[i]=c;
        }
        String resString = new String(result);
        System.out.println("加密后字符串:");
        System.out.println(resString);
    }
} 

第4题,用数组实现了一个int栈,比较简单。
使用纯数组实现,效率不list等对象容器高效,而且通过具体栈顶指针的操作,让你更了解栈。
要用其它类型的栈,直接把int数组换成其它类型的数组就可以。
public class MyStack {

    private int[] data ;// 栈内数据
    private int top; // 栈顶指针
    private int addtionsize = 20;
    public MyStack() {
        top = 0;
        data = new int[100];
        System.out.println("初始化,栈顶指向:"+top);
    }

    public void push(int newValue)
    {
        if (top==data.length) {
            int [] temp = new int[data.length+addtionsize];
            for (int i = 0; i < data.length; i++) {
                 temp[i] = data[i];
            }
            data = temp;
        }
        data[top] = newValue;
        top++;
        System.out.println("添加元素,栈顶指向:"+top);
    }

    public int pop()
    {
        if (top>0) {
            top--;
            System.out.println("删除元素,栈顶指向:"+top);
            return data[top];
        }
        else
        {
            throw new StackOverflowError();
        }
    }

    public static void main(String args[])
    {
        MyStack stack = new MyStack();
        for (int i = 0; i < 120; i++) {
            stack.push(i);
        }

        for (int i = 0; i < 10; i++) {
            int value = stack.pop();
            System.out.println(value);
        }
    }
}
其他:2题:
import java.io.*;
import java.util.*;
public class exp2_1
{
	public static void main(String []args)
	{
		long[] fib = new long[59];
		fib[0] = 1;
		fib[1] = 1;
		long total = fib[0] + fib[1];
		for(int i = 2; i < 59; i++)
		{
			fib[i] = fib[i - 1] + fib[i - 2]; 
			total += fib[i];
		}
		System.out.println("平均数是" + total / 59);
		
		long[] evenNum = new long[59];
		int j = 0;
		for(int i = 0; i < 59; i++)
		{
			if(fib[i] % 2 == 0)
			{
				evenNum[j] = fib[i];
				j++;
			}
		}
		System.out.print("偶数有:");
		for(int i = 0; i < evenNum.length; i++)
		{
			System.out.print(evenNum[i] + " ");
		}
		
	}
}
3题:
import java.io.*;
import java.util.*;
public class exp2_1
{
	public static void main(String []args)
	{
		try
		{
			InputStreamReader isr=new InputStreamReader(System.in);
			BufferedReader br=new BufferedReader(isr);
			
			String str;
			str = br.readLine();
			char[] ch = str.toCharArray();
			for(int i = 0; i < str.length(); i++)
			{
				if(ch[i] >= 'a' && ch[i] <= 'z')
				{
					ch[i] -= 32;
				}
				else if(ch[i] >= 'A' && ch[i] <= 'Z')
				{
					ch[i] += 32;
				}
			}
			for(int i = 0; i < ch.length; i++)
			{
				System.out.print(ch[i]);
			}
		}
		catch(IOException ie)
		{
			System.out.print(ie);
		}
		
	}
}
4题:我的这个栈可以支持各种数据类型,而楼上那位只能支持INT型
import java.util.*;

public class MyStack
{
	private LinkedList ll = new LinkedList();
	
	public Object pop()
	{
		return ll.removeLast();
	}
	
	public void push(Object obj)
	{
		ll.addLast(obj);
	}
	
	public Object peek()
	{
		return ll.getLast();
	}
	
	public boolean empty()
	{
		return ll.isEmpty();
	}
	
	public int size()
	{
		return ll.size();
	}
}

class MyStackTest
{
	public static void main(String[] args)
	{
		MyStack ms = new MyStack();
		ms.push("one");
		ms.push("two");
		ms.push("three");
		
		int index = 0;
		System.out.println(++index + " : " + ms.pop());
		System.out.println(++index + " : " + ms.peek());
		System.out.println(++index + " : " + ms.size());
		System.out.println(++index + " : " + ms.pop());
		System.out.println(++index + " : " + ms.pop());
		System.out.println(++index + " : " + ms.empty());
	}
}

上一个:"C:\Java\jre6\bin\javaw.exe" -jar "%1" 这是什么意思怎么弄?
下一个:java中title正则表达式,这个错在哪里在,怎么用正则表达式提取弹性体文档中<title></title>之间的文字

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,