分配1到7之间的值

时间:2015-08-26 03:15:36

标签: java initialization

我正在创建一个名为import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.function.Consumer; public class CmdTools{ /** * blocking read from process and copy to stdout */ public static void read( Process p, int timeout ) throws IOException, InterruptedException{ read( p, timeout, System.out::print, System.err::print ); } /** * blocking read from process * @param timeout A timeout in milli seconds, or 0 for infinite */ public static void read( Process p, int timeout, Consumer<String> in, Consumer<String> err) throws IOException, InterruptedException{ try(InputStream inStream = p.getInputStream(); InputStream errStream = p.getErrorStream(); Reader inReader = new InputStreamReader(inStream); Reader errReader = new InputStreamReader(errStream)){ long now = System.currentTimeMillis(); long end = now + timeout; int len; char buffer[] = new char[4096]; boolean canContinue = true; while( canContinue ){ if( inStream.available() > 0 ){ len = inReader.read( buffer, 0, Math.min(buffer.length, inStream.available()) ); in.accept(new String(buffer,0,len)); } if( errStream.available() > 0 ){ len = errReader.read( buffer, 0, Math.min(buffer.length, errStream.available() ) ); err.accept(new String(buffer,0,len)); } Thread.sleep(2); boolean hasData = inStream.available() > 0 || errStream.available() > 0; if( timeout == 0 ){ canContinue = hasData || p.isAlive(); } else{ canContinue = System.currentTimeMillis() < end && ( p.isAlive() || hasData ); } } } } } 的新Java类,我正在尝试为这个名为DateTwo的类声明和初始化一个成员字段,该字段将是1到7之间的数字。

我试过了:

dayNumber

错误讯息:

  

变量dayNumber已在DateTwo类中定义

public class DateTwo {
    int dayNumber = 1;
    int dayNumber = 2;
    int dayNumber = 3;
    int dayNumber = 4;
    int dayNumber = 5;
    int dayNumber = 6;
    int dayNumber = 7;
}

错误讯息:

  

非法开始表达

有任何想法或想法如何解决此错误?

4 个答案:

答案 0 :(得分:1)

您声明了一个包含成员字段的类,请将字段private设置为其他人无法触及该字段,并实施getset方法,也称为&#34 ;吸气剂&#34;和#34; setter&#34;。设定者应该验证。

您可能还需要constructor,因此该字段永远不会被初始化。

public class DateTwo {
    private int dayNumber;

    // Constructor
    public DateTwo(int dayNumber) {
        setDayNumber(dayNumber); // Reuses setter to enforce validation
    }

    // Setter
    public void setDayNumber(int dayNumber) {
        if (dayNumber < 1 || dayNumber > 7)
            throw new IllegalArgumentException("Invalid day number: " + dayNumber);
        this.dayNumber = dayNumber;
    }

    // Getter
    public int getDayNumber() {
        return this.dayNumber;
    }
}

答案 1 :(得分:0)

你显然只想要一个值(不是几天的数组)。

此代码将执行此操作:

import java.util.Random;

public class DateTwo {

  private dayNumber;

  // Initialize all class state in your "constructor"
  public DateTwo () {
    // this gives you a random integer between 0 and 6
    dayNumber = new Random().nextInt(7);
    // this shifts the value to between 1 and 7
    dayNumber += 1;
  }

  // This "getter" method allows clients to get your (private) dayNumber
  public getDayNumber () {
    return dayNumber;
  }

}

完成同样事情的更简单方法:

dayNumber = new Random().nextInt(7) + 1;

答案 2 :(得分:0)

@KickButtowski只是为了您的信息,我不是抄袭者。我也没上学。我使用他的代码作为我的代码的参考:(没有评论)

感谢所有帮助我得出这个结论的人。

(没有评论)

public class DateTwo {
    public int dayNumber = 1;


    public void displayDay() {
        if (dayNumber >= 1 && dayNumber <= 7)
            if (dayNumber >=1 && dayNumber <=7)
                System.out.println("That is a day of the week.");
            if (dayNumber == 1)
                System.out.println("It is: Monday");

            else if (dayNumber == 2) {
                System.out.println("It is: Tuesday");
            }
            else if (dayNumber == 3){
                System.out.println("It is: Wednesday");
            }
            else if (dayNumber == 4){
                System.out.println("It is: Thursday");
            }
            else if (dayNumber == 5){
                System.out.println("It is: Friday");
            }
            else if (dayNumber == 6){
                System.out.println("It is: Saturday");
            }
            else if (dayNumber == 7){
                System.out.println("It is: Sunday");
            }
        else {
            System.out.println("That is not a Day of the Week.");
        }
    }
}

答案 3 :(得分:-1)

目前,您正在重新定义已定义的变量&amp;再次。所以,错误即将到来。使用数组

public class DateTwo {
    int dayNumber[]=new int[7];//declaration and instantiation  
    dayNumber[0] = 1;
    dayNumber[1] = 2;
    dayNumber[2] = 3;
    dayNumber[3] = 4;
    dayNumber[4] = 5;
    dayNumber[5] = 6;
    dayNumber[6] = 7;
}

int dayNumber[]={1,2,3,4,5,6,7};//declaration, instantiation and initialization