String数组结果为null

String数组结果为null

package pgdp.pinguart;

import static pgdp.MiniJava.*;
public class PinguArt {

public static void main(String[] args) {
int n;
int j=0;

int[] pi=new int[8];


String[] tos=new String[8];

for(int i=0;i<8;i++) {
n=readInt("Bitte geben Sie eine Pingu-Art-Zahl ein::");//意思是请给出一个数

if(i==0) {
pi[i]=n*(10^(-i-1)); //把用户输入的每一个数单独放入数组
if(pi[i]==0) {
tos[i]=" "; //给每一个数赋值字符串

}else if(pi[i]==1) {
tos[i]="-";

}else if(pi[i]==2) {
tos[i]="~";

}else if(pi[i]==3) {
tos[i]="P";
}
}else {
pi[i]=(n*(10^(-i-1)))%10;


if(pi[i]==0) {
tos[i]=" ";

}else if(pi[i]==1) {
tos[i]="-";

}else if(pi[i]==2) {
tos[i]="~";

}else if(pi[i]==3) {
tos[i]="P";
}
}

}


writeLineConsole("+---[PinguArt]---+");
write("|"+tos[7]+tos[6]+"|");
write("|"+tos[5]+tos[4]+"|");
write("|"+tos[3]+tos[2]+"|");
write("|"+tos[1]+tos[0]+"|");
write("+----------------+");


}

}

# 具体遇到的问题

老师我这里导入的是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结束,然后根据截取下来的字符进行判断。实现代码如下所示:

package pgdp.pinguart;

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

}else {
tos[i] = " ";
}

System.out.println("+---[PinguArt]---+");
System.out.println("|"+tos[7]+tos[6]+"|");
System.out.println("|" + tos[5] + tos[4] + "|");
System.out.println("|" + tos[3] + tos[2] + "|");
System.out.println("|" + tos[1] + tos[0] + "|");
System.out.println("+----------------+");

}
}

注:一般情况下,并不是使用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下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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