风聆逆火 2019-04-09 22:04 采纳率: 0%
浏览 259

来大佬帮我看一个,最后的零怎么输出不了

已经解决了

多项式加法(5分)


题目内容:
一个多项式可以表达为x的各次幂与系数乘积的和,比如:
2x6+3x5+12x3+6x+20
现在,你的程序要读入两个多项式,然后输出这两个多项式的和,也就是把对应的幂上的系数相加然后输出。
程序要处理的幂最大为100。

输入格式:
总共要输入两个多项式,每个多项式的输入格式如下:
每行输入两个数字,第一个表示幂次,第二个表示该幂次的系数,所有的系数都是整数。第一行一定是最高幂,最后一行一定是0次幂。
注意第一行和最后一行之间不一定按照幂次降低顺序排列;如果某个幂次的系数为0,就不出现在输入数据中了;0次幂的系数为0时还是会出现在输入数据中。

输出格式:
从最高幂开始依次降到0幂,如:
2x6+3x5+12x3-6x+20
注意其中的x是小写字母x,而且所有的符号之间都没有空格,如果某个幂的系数为0则不需要有那项。

import java.util.Scanner;

public class zuoye52 {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner in = new Scanner(System.in);
    int[][]a= new int[2][101];
    int[][]b= new int[2][101];
    int cnt;
    int cnb;
    int max =0;

//初始化 2行100列 第一行填入幂次 第二行做系数
for( cnt= 0;cnt<101; )
{
a[0][cnt]=cnt;
cnt++;
}
for( cnb= 0;cnb<101; )
{
b[0][cnb]=cnb;
cnb++;
}
//读入 第一个行列式
do
{
cnt=in.nextInt();
a[1][cnt]=in.nextInt();
}while(cnt!=0);
//读入 第二个行列式
do
{
cnb=in.nextInt();
b[1][cnb]=in.nextInt();
}while(cnb!=0);
//输出

    for(int j=101; j>=0;j--)
    {
        int sum=0;

//系数相加
if(j<101)
{
sum+=a[1][j]+b[1][j];
}
if(sum==0)
{
continue;
}
//输出

                if(j>1)
                {[
                    System.out.print(sum+"x"+j+"+");
                }
                else if(j==0)
                {
                    if(a[1][0]+b[1][0]==0)
                    {
                    System.out.print("0");
                    }
                    else 
                    {
                        System.out.print(sum);
                    }
                }
                else if(j==1)
                {
                    System.out.print(sum+"x"+"+");
                }


}
}

}
测试结果
1 2 0 0
2 3 0 0
3x2+2x+

1 2 0 10
3 2 0 20
2x3+2x+30
///////
2 1 3 1 0 10
4 1 5 1 11 1 0 0
1x11+1x5+1x4+1x3+1x2+10
新代码
import java.util.Scanner;
public class zuoye52 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in = new Scanner(System.in);
        int[][]a= new int[2][101];
        int[][]b= new int[2][101];
        int cnt;
        int cnb;
        int sam=0;
        boolean jieguo=false;
//初始化 2行100列 第一行填入幂次 第二行做系数
        for( cnt= 0;cnt<101; )
        {
            a[0][cnt]=cnt;
            cnt++;
        }
        for( cnb= 0;cnb<101; )
        {
            b[0][cnb]=cnb;
            cnb++;
        }
//读入 第一个行列式
        do
        {
            cnt=in.nextInt();
            a[1][cnt]=in.nextInt();
        }while(cnt!=0);
//读入  第二个行列式
        do
        {
            cnb=in.nextInt();
            b[1][cnb]=in.nextInt();
        }while(cnb!=0);
//输出        
       for(int i=0; i< 101; i++)
       {

           sam+=a[1][i]+b[1][i];
       }
// 遍历 结果为零时 输出0      
       if(sam==0)
           System.out.print("0");
//  结果不为零时     
       else
       {
           boolean fb=true;
        for(int j=101; j>=0;j--)
        {
            int sum=0;
//系数相加
            if(j<101)
            {
                sum+=a[1][j]+b[1][j];
            }
            if(sum==0)
            {
                continue;
            }
//输出最高次 +1 -1
            if(j>=1&&fb&&sum!=0)
            {
                if(sum==1)
                    System.out.print("x"+j);
                else
                    {
//-1 及其他
                        if(sum==-1) 
                            System.out.print("-"+"x"+j);
                        else
                        System.out.print(sum+"x"+j);
                    }
                fb=false;
                continue;

            }
//输出低次 0 +-1还没分开
                    if(j>1&&sum!=0)
                    {
//+放前面了 必须判断正负号
                            if (sum>0)
                            {
                                 System.out.print("+");

                                if(sum==1)
                                     System.out.print("x"+j);
                                if(sum!=1)
                                     System.out.print(sum+"x"+j);
                            }
                            else 
                            {   
                                if(sum==-1)
                                    System.out.print("-"+"x"+j);
                                else
                               System.out.print(sum+"x"+j);
                            }


                    }
                     if(j==0&&sum!=0)
                    {
                        if(sum>0)
                            System.out.print("+"+sum);
                        else
                            System.out.print(sum);


                    }
                     if(j==1&&sum!=0)
                    {
                        if(sum>0)
                        {
                                if(sum==1)
                                    System.out.print("+"+"x");
                                else
                                System.out.print("+"+sum+"x");
                        }
                        else
                        {   
                                if (sum!=-1)
                                System.out.print(sum+"x");  
                                else
                                    System.out.print("-"+"x");  
                       }
                    }


    }
       }  
    }
}
  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥50 安卓adb backup备份子用户应用数据失败
    • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
    • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
    • ¥30 python代码,帮调试
    • ¥15 #MATLAB仿真#车辆换道路径规划
    • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
    • ¥15 数据可视化Python
    • ¥15 要给毕业设计添加扫码登录的功能!!有偿
    • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
    • ¥15 微信公众号自制会员卡没有收款渠道啊