如何解决运行时错误 [英] How can I solve my runtime error

查看:105
本文介绍了如何解决运行时错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我遇到了数组的实现,其中createSkills()方法应该创建一个大小为n的String数组,提示用户输入每个技能并读入输入的值。该方法应返回一个String数组,其中包含用户输入的所有技能。并且printSkills()方法应该打印出我的技能是:,并且数组参数的每个元素都在它自己的行上。我认为我身边有一些小的阵列实现错误。



我尝试过:

< br $>
//厨师班



import java.util.Scanner;



公共类厨师扩展人员实施技能

{

私人扫描仪a;

int i;







protected Chef(String f,String l){

super(f,l);



}



@Override

public String toString()

{

String str =我是厨师;

返回(str);

}



@Override

public void printInfo(){

System.out.println(super.toString()++ Chef。 this.toString());



}



@Override

public String [] createSkills(int n){

String [] arr = new String [n];

扫描仪键盘=新扫描仪(System.in);

系统.out.println(输入你的技能\ n);

String s = keyboard.nextLine();



return( arr);

}



@Override

public void printSkills(String [] s){

//字符串a;

for(i = 0; i< s [i] .length();> {

s [i] = a.nextLine();

}

System.out.println(我的技能是:/ n+ s [i]);



}







}





//人员类





公共抽象类Person

{

private String first;

private String last;

protected Person(String f,String l )

{

this.first = f;

this.last = l;

}

public abstract void printInfo ();

public String toString()

{

return(this.first ++

this.last);

}

}





//接口





公共界面技巧

{

public abstract String [] createSkills (int n);

public abstract void printSkills(String [] s);

}



< br $>
//主班级





公共类技能1

{

public static void main(String [] args)

{

Chef c1 = new Chef(Jamie,Oliver);

String [] a = c1.createSkills(3);

System.out.println();

c1.printInfo();

System.out.println();

c1.printSkills(a);

System.out.println();

厨师c2 =新厨师(Gordon,Ramsey);

String [] b = c2.createSkills(2);

System.out.println();

c2.printInfo();

System.out.println();

c2.printSkills(b);

}

}







//运行时错误





---- jGRASP执行:java技能1

输入你的技能



烹饪



Jamie Oliver我是厨师



线程异常mainjava.lang.NullPointerException

在Chef.printSkills(Chef.java:42)

在Skills1.main(Skills1.java:10)



---- jGRASP wedge2:进程退出代码为1.

---- jGRASP:操作完成。







//预期产量





输入技能:烹饪

输入技能:切丁

输入技能:切碎蔬菜

Jamie Olive r我是厨师

我的技能是:

烹饪

切丁

砍蔬菜

输入技能:烹饪甜点

输入技能:向人们大喊

Gordon Ramsey我是一名厨师

我的技能是:

烹饪甜点

大吼大叫

I am stuck at implementation of array where createSkills() method should create a String array of size n, prompt the user to enter each of the skills and read in the values entered. The method should return a String array that contains all the skills entered by the user. And The printSkills() method should print out "My skills are: " with each element of the array parameter on its own line. I think there is some minor array implementation mistake from my side.

What I have tried:

//Chef class

import java.util.Scanner;

public class Chef extends Person implements Skills
{
private Scanner a;
int i;



protected Chef(String f, String l) {
super(f, l);

}

@Override
public String toString()
{
String str="I am a Chef";
return(str);
}

@Override
public void printInfo() {
System.out.println(super.toString()+" "+Chef.this.toString());

}

@Override
public String[] createSkills(int n) {
String[] arr = new String[n];
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter your skills\n");
String s=keyboard.nextLine();

return (arr);
}

@Override
public void printSkills(String[] s) {
//string a;
for( i=0; i<s[i].length();> {
s[i]= a.nextLine();
}
System.out.println("My skills are: /n"+s[i]);

}



}


//Person Class


public abstract class Person
{
private String first;
private String last;
protected Person(String f, String l)
{
this.first = f;
this.last = l;
}
public abstract void printInfo();
public String toString()
{
return (this.first + " " +
this.last);
}
}


//Interface


public interface Skills
{
public abstract String[] createSkills(int n);
public abstract void printSkills(String[] s);
}


//Main class


public class Skills1
{
public static void main (String[] args)
{
Chef c1 = new Chef("Jamie", "Oliver");
String[] a = c1.createSkills(3);
System.out.println();
c1.printInfo();
System.out.println();
c1.printSkills(a);
System.out.println();
Chef c2 = new Chef("Gordon", "Ramsey");
String[] b = c2.createSkills(2);
System.out.println();
c2.printInfo();
System.out.println();
c2.printSkills(b);
}
}



//Runtime Error


----jGRASP exec: java Skills1
Enter your skills

cooking

Jamie Oliver I am a Chef

Exception in thread "main" java.lang.NullPointerException
at Chef.printSkills(Chef.java:42)
at Skills1.main(Skills1.java:10)

----jGRASP wedge2: exit code for process is 1.
----jGRASP: operation complete.



//Expected Output


Enter skill: Cooking
Enter skill: Dicing
Enter skill: Chopping veggies
Jamie Oliver I am a chef
My skills are:
Cooking
Dicing
Chopping veggies
Enter skill: Cooking dessert
Enter skill: Yelling at people
Gordon Ramsey I am a chef
My skills are:
Cooking dessert
Yelling at people

推荐答案

尝试更换

Try to replace
for( i=0; i<s[i].length();> {



with


with

for( i=0; i<s.length();i++> {


这篇关于如何解决运行时错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆