首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我在主类StringIndexOutOfBounds中找不到错误

我在主类StringIndexOutOfBounds中找不到错误
EN

Stack Overflow用户
提问于 2017-01-18 18:08:06
回答 1查看 65关注 0票数 0

这是第一个类,这是模板类

代码语言:javascript
复制
public class Email{
  private String title;
  private String to;
  private double size;
  private boolean sent;
  static int numEmails;

  public Email(String Title, String To, double Size){
    title = Title;
    to = To;
    size = Size;
    numEmails++;
  }

public void displayEmail(){
  System.out.printf("Subject: %30s%n", title);
  System.out.printf("To: %-35s%n",to);
  System.out.printf("This email has size: %.2f kB%n",size );
  if(sent)
  System.out.printf("This email has been sent%n");
  else
  System.out.printf("This email has not been sent%n");
}

public void sendEmail(){
  sent = true;
  displayEmail();
}

public boolean isValid(){
  int sep = to.indexOf('@');
  if(to.substring(sep).equals("@student.ksu.edu.sa"))
    return true;

  return false;
}

//setters
public void setTitle(String Title){
  title = Title;
}

public void setTo(String To){
  to = To;
}

public void setSize(double Size){
  size = Size;
}

public void setSent(boolean Sent){
  sent = Sent;
}

//getters
public String getTitle(){
  return title;
}

public String getTo(){
  return to; 
}

public double getSize(){
  return size;
}

public boolean getSent(){
  return sent;
}

}//End of class

这是第二节课

当我运行此命令时,它显示error StringIndexOutOfBounds

我猜这与isValid()方法有关

我想通过从user读取来填充数组中的第一个和第二个对象,但是也有一个错误,当我从user读取时,我似乎不知道为什么

代码语言:javascript
复制
import java.util.*;
public class Inbox{
static Scanner read = new Scanner (System.in);
static Email[] sentEmails = new Email[Email.numEmails];

//archive method
public static Email[] archive(Email[] emailList){
  for(int i=0;i<Email.numEmails;i++)
    if(emailList[i].getSent())
      sentEmails[i] = new Email(emailList[i].getTitle(),emailList[i].getTo(),emailList[i].getSize());
  return sentEmails;
}

//findByRecipient method
public static void findByRecipient(Email emailList[], String toAddress){
  System.out.println("The emails addressed to \"everyONE@student.ksu.edu.sa\" are:");
  System.out.println("==========================");
  toAddress = toAddress.toLowerCase();
  for(int i=0;i<Email.numEmails;i++)
    if(emailList[i].getTo().equals(toAddress))
      emailList[i].displayEmail();
}

//main
public static void main(String[] args){
  Email[] array = new Email[10];

  for(int i=0;i<2;i++){
    System.out.printf("Please enter the title, recipient, and size of email %d %n", (Email.numEmails+1));
    array[i] = new Email(read.nextLine(),read.nextLine(),read.nextDouble());
;}


  array[2] = new Email("Urgent: Lab final","everyone@student.ksu.edu.sa",200);
  array[3] = new Email("Fwd: Boarding pass","SaadAli@ksu.edu.sa",100);
  array[4] = new Email("You won 1M SR!","email@spam.com",5000.0);

  //1
  System.out.println("The Inbox currently contains");
  System.out.println("==========================");
  for(int j=0;j<Email.numEmails;j++){
    if(array[j]!=null)
      array[j].displayEmail();}

  for(int k=0;k<Email.numEmails;k++){
    if(array[k].isValid())
      array[k].sendEmail();
    else
      System.out.println("Email is invalid");
}


  //2
  archive(array);
  System.out.println("The Inbox after sending contains:");
  System.out.println("==========================");
  for(int s=0;s<sentEmails.length;s++){
    if(sentEmails[s]!=null)
      sentEmails[s].displayEmail();}

  //3
  findByRecipient(array,"everyONE@student.ksu.edu.sa");

  //4
  System.out.println("The titles of emails in archive are:");
  System.out.println("==========================");
  for(int r=0;r<Email.numEmails;r++)
    System.out.println(array[r].getTitle());


  //5
  System.out.println("Number of emails: " + Email.numEmails);


  }//End of main

}//End of class
EN

回答 1

Stack Overflow用户

发布于 2017-01-18 18:18:51

如果看不到输入,就很难确定,但是您的isValid()函数不会检查'@‘符号是否存在。如果此函数被调用,并且var to没有'@‘符号,则var sep将被设置为-1,从而导致行"to.substring(-1)“的错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41716496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档