我正在创建一个名为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;
}
错误讯息:
非法开始表达
有任何想法或想法如何解决此错误?
答案 0 :(得分:1)
您声明了一个包含成员字段的类,请将字段private
设置为其他人无法触及该字段,并实施get
和set
方法,也称为&#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