String数组结果为null

String数组结果为null

1
package pgdp.pinguart;<br><br>import static pgdp.MiniJava.*;<br>public class PinguArt {<br><br> public static void main(String[] args) {<br>        int n;  <br>        int j=0;<br><br>        int[] pi=new int[8];    <br><br><br>        String[] tos=new String[8];<br><br>     for(int i=0;i<8;i++) {<br>           n=readInt("Bitte geben Sie eine Pingu-Art-Zahl ein::");//意思是请给出一个数<br><br>          if(i==0) {<br>              pi[i]=n*(10^(-i-1)); //把用户输入的每一个数单独放入数组<br>                if(pi[i]==0) {<br>                        tos[i]=" "; //给每一个数赋值字符串<br><br>                      }else if(pi[i]==1) {<br>                        tos[i]="-";<br><br>                     }else if(pi[i]==2) {<br>                        tos[i]="~";<br><br>                     }else if(pi[i]==3) {<br>                        tos[i]="P";<br>                     }<br>            }else {<br>             pi[i]=(n*(10^(-i-1)))%10;<br><br><br>          if(pi[i]==0) {<br>            tos[i]=" ";<br><br>           }else if(pi[i]==1) {<br>            tos[i]="-";<br><br>         }else if(pi[i]==2) {<br>            tos[i]="~";<br><br>         }else if(pi[i]==3) {<br>            tos[i]="P";<br>         }<br>            }<br><br>       }<br><br><br>           writeLineConsole("+---[PinguArt]---+"); <br>        write("|"+tos[7]+tos[6]+"|");<br>       write("|"+tos[5]+tos[4]+"|");<br>       write("|"+tos[3]+tos[2]+"|");<br>       write("|"+tos[1]+tos[0]+"|");<br>     write("+----------------+");  <br><br><br>    }<br><br>}

# 具体遇到的问题

老师我这里导入的是mini java。

题目要求是用户输入一串自定义,长度小于等于8的数。(只能输入1,2,3,0)

最后输出结果,0表示空格 “ ”;1 表示“-”;2表示“~”;3表示“P”;如果没有数字的话,也输出的为空格,并且是从后往前输出!

比如:

12010302 表示 

"~ P - ~-"

122 表示

"~~-     "

最后以

+----------------+

结尾

比如一个例子

Bitte geben Sie eine Pingu-Art-Zahl ein:
> 20200220
Bitte geben Sie eine Pingu-Art-Zahl ein:
> 10121201
Bitte geben Sie eine Pingu-Art-Zahl ein:
> 12
Bitte geben Sie eine Pingu-Art-Zahl ein:
> 10302101
Bitte geben Sie eine Pingu-Art-Zahl ein:
> 2303120
Bitte geben Sie eine Pingu-Art-Zahl ein:
> 1231200
Bitte geben Sie eine Pingu-Art-Zahl ein:
> 20201210
Bitte geben Sie eine Pingu-Art-Zahl ein:
> 120012
+---[PinguArt]---+
| ~~  ~ ~- ~-~- -|
|~-      - -~ P -|
| ~-P P~   ~-P~- |
| -~- ~ ~~-  ~-  |
+----------------+


# 报错信息的截图

# 相关课程内容截图

# 尝试过的解决思路和结果
老师,我不知道为什么,我输出的值全是空的。我的思路是正确的吗?(我觉得我的思路是对的哈哈)

谢谢老师费心了

# 粘贴全部相关代码,切记添加代码注释(请勿截图)

在这里输入代码,可通过选择【代码语言】突出显示

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好,老师给同学提供一种Java代码的实现思路。如下所示:

使用substring()截取字符,从i开始i+1结束,然后根据截取下来的字符进行判断。实现代码如下所示:

1
package pgdp.pinguart;<br><br>import java.util.Scanner;<br>public class PinguArt {<br> public static void main(String[] args) {<br>       Scanner sc=new Scanner(System.in);<br>        String  n;<br>        int j = 0;<br>       String[] pi = new String[8];<br>        String[] tos = new String[8];<br>//     n = new String("120012");<br>        //  键盘输入<br>      n = sc.next();<br>        for (int i = 0; i < 8; i++) {<br>           // 当字符串长度大于1时,进行截取否则赋值为0<br>           if (n.length()>i) {<br>                // 截取字符串<br>               pi[i] =n.substring(i, i+1);<br>               // 使用equals()进行判断<br>              if (pi[i].equals("0")) {<br>                  tos[i] = " ";<br>                } else if (pi[i].equals("1")) {<br>                 tos[i] = "-";<br>             } else if (pi[i].equals("2")) {<br>                 tos[i] = "~";<br>             } else if (pi[i].equals("3")) {<br>                 tos[i] = "P";<br>             } <br>         }else {<br>                tos[i] = " ";<br>            }<br>       } <br>     System.out.println("+---[PinguArt]---+");<br>       System.out.println("|"+tos[7]+tos[6]+"|");<br>      System.out.println("|" + tos[5] + tos[4] + "|");<br>      System.out.println("|" + tos[3] + tos[2] + "|");<br>      System.out.println("|" + tos[1] + tos[0] + "|");<br>      System.out.println("+----------------+");<br><br>   }<br>}<br>

注:一般情况下,并不是使用mini Java 进行开发,建议同学学习使用Java语法。

好帮手慕小尤 2020-11-18 19:00:28

同学你好,1. 测试同学代码,出现编译性异常,老师无法进行测试。如下图所示:

http://img1.sycdn.imooc.com//climg/5fb4f6b609fd87fd07030277.jpg

2. 建议同学查看代码,查看是否将输入的内容当做一个整体,导致if判断未生效,最终导致赋值失败,输出内容为0。如下所示:

http://img1.sycdn.imooc.com//climg/5fb4fe0c09fdab6510420460.jpg

3. 因老师无法测试同学的代码,无法确定是否可以计算出结果,则建议同学进行自测。

注:建议同学使用Java语言进行练习。

  • 提问者 慕仙7354812 #1
    小尤老师,我把pi[i]值输出,发现不是单独数。那肯定是我的代码有问题。 拿我想输入一串数字,怎么才能把这串数字放入数组呢?
    2020-11-18 21:38:01
好帮手慕小尤 2020-11-18 17:44:51

同学你好,1. 同学代码一直输出0,则代表pi[i]的值一直为0,所以建议同学查看pi[i]的计算结果。并建议同学查看n的值是否正确。

http://img1.sycdn.imooc.com//climg/5fb4ecaf0986ce9a09750489.jpg

2. 同学提供的代码,老师无法进行测试。本课程主要讲解的是Java语言,则建议同学使用Java语言进行练习。

  • 提问者 慕仙7354812 #1
    老师,您可不可以就是把我的代码就复制到ellipse上,应该就有结果。 如果用户输出了一个八位数,我能用我写的代码计算出每一位数吗? 比如,用户输入012, 我的代码运行:pi[0]==0,pi[1]=1;pi[2]=2, 是这样的结果吗?
    2020-11-18 18:15:42
  • 提问者 慕仙7354812 #2
    n 是用户输入的长度小于等于八位数的值,这个n 是随意输入的
    2020-11-18 18:20:01
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师
插入代码